2 Docker常用命令與操作
阿新 • • 發佈:2018-12-29
1 映象操作
操作 | 命令 | 說明 |
---|---|---|
檢索 | docker search 關鍵字 eg:docker search redis | hub.docker.com上檢索映象的詳細資訊,如映象的TAG。 |
拉取 | docker pull 映象名:tag | :tag是可選的,tag表示標籤,多為軟體的版本,預設是latest |
列表 | docker images | 檢視所有本地映象 |
刪除 | docker rmi image-id | 刪除指定的本地映象 |
1.1 檢索
[[email protected] ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relati.. . 7503 [OK]
mariadb MariaDB is a community-developed fork of M... 2415 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Crea... 560 [OK]
zabbix/zabbix-server-mysql Zabbix Server with MySQL database support 150 [ OK]
hypriot/rpi-mysql RPi-compatible Docker Image with Mysql 102
zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server ... 80 [OK]
......
- NAME : 名稱
- DESCRIPTION : 描述
- STARS : 關注數
- OFFICIAL : 是否為官方映象
- AUTOMATED : 是否自動構建
1.2 拉取
[[email protected] ~]# docker pull mysql
latest: Pulling from mysql
......
預設下載標籤為latest的版本
1.2.1 指定版本拉取
docker pull mysql:5.6
1.3 列表
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
mysql latest 4eabe6a48367 3 weeks ago 485.5 MB
- REPOSITORY : 映象來源
- TAG : 版本標籤
- IMAGE ID : 映象id
- CREATED : 建立時間
- VIRTUAL SIZE : 映象大小
2 容器操作
2.1 步驟
軟體映象(eg:QQ安裝包)----> 執行映象(安裝QQ)----產生一個容器(正在執行的軟體,執行的QQ)
2.2 具體命令(以Tomcat為例)
2.2.1 搜尋映象
# tomcat : 映象名稱
[[email protected] ~]# docker search tomcat
2.2.2 拉取映象
# tomcat : 映象名稱
[[email protected] ~]# docker pull tomcat
2.2.3 根據映象啟動容器
# mytomcat : 自定義名稱
# tomcat : 映象名稱
# latest : 映象版本
[[email protected] ~]# docker run --name mytomcat -d tomcat:latest
a7def3456d106f185818654cf85d0c0236c13f7e4bdfa63b180c3d639870c5fb
2.2.4 檢視執行中的容器
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7def3456d10 tomcat:latest "catalina.sh run" 15 seconds ago Up 13 seconds 8080/tcp mytomcat
2.2.5 停止執行中的容器
# a7def3456d10 : 容器id
[[email protected] ~]# docker stop a7def3456d10
a7def3456d10
2.2.6 檢視所有的容器
# a7def3456d10 : 容器id
[[email protected] ~]# docker ps -a
2.2.7 啟動容器
# a7def3456d10 : 容器id
[[email protected] ~]# docker start a7def3456d10
a7def3456d10
2.2.8 刪除一個容器
# a7def3456d10 : 容器id
[[email protected] ~]# docker rm a7def3456d10
a7def3456d10
2.2.9 啟動埠對映的tomcat
# -d:後臺執行
# -p: 將主機的埠對映到容器的一個埠 主機埠(8888):容器內部的埠(8080)
# 訪問: ip:8888
[[email protected] ~]# docker run -d -p 8888:8080 tomcat
2.2.10 檢視容器的日誌
# 46c93fd0a543 : 容器id
[[email protected] ~]# docker logs 46c93fd0a543
2.3 開啟多個tomcat,一個映象開啟多個容器
# -d:後臺執行
# -p: 將主機的埠對映到容器的一個埠 主機埠(8888):容器內部的埠(8080)
# 訪問: ip:8888
[[email protected] ~]# docker run -d -p 8888:8080 tomcat
[[email protected] ~]# docker run -d -p 8889:8080 tomcat
3 Docker安裝MySQL
3.1 檢索和拉取
[[email protected] ~]# docker search mysql
[[email protected] ~]# docker pull mysql
3.2 啟動
3.2.1 啟動
[[email protected] ~]# docker run --name mysql3306 -d mysql
bb5fa052d1a97def8b0e7490c8d41a5893c898e4b51f225b2a77ef8b1f15e15d
3.2.2 檢視mysql容器是否啟動
# 發現MySQL容器未啟動
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
46c93fd0a543 tomcat "catalina.sh run" 21 minutes ago Up 21 minutes 0.0.0.0:8080->8080/tcp sick_pasteur
3.2.3 檢視所有容器
# MySQL的狀態是 Exited (1) 23 seconds ago
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb5fa052d1a9 mysql "docker-entrypoint.s 26 seconds ago Exited (1) 23 seconds ago mysql3306
46c93fd0a543 tomcat "catalina.sh run" 21 minutes ago Up 21 minutes 0.0.0.0:8080->8080/tcp sick_pasteur
3.2.4 檢視MySQL日誌,查詢未啟動原因
[[email protected] ~]# docker logs bb5fa052d1a9
# 資料庫沒有初始化,密碼未指定
error: database is uninitialized and password option is not specified
# 必須指定下面3箇中的一個
# MYSQL_ROOT_PASSWORD : root使用者的密碼
# MYSQL_ALLOW_EMPTY_PASSWORD : 允許空密碼
# MYSQL_RANDOM_ROOT_PASSWORD : 隨機密碼
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
3.2.5 指定密碼啟動
# 刪除剛剛安裝的MySQL
[[email protected] ~]# docker rm bb5fa052d1a9
bb5fa052d1a9
# 指定密碼啟動
[[email protected] ~]# docker run --name mysql3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
de7ab7fb702e8fcc8934e4fab5b3a86969e2770c93d28808ecf9b6a0032fb44f
# 檢視正在執行的容器
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de7ab7fb702e mysql "docker-entrypoint.s 8 seconds ago Up 7 seconds 3306/tcp, 33060/tcp mysql3306
46c93fd0a543 tomcat "catalina.sh run" 31 minutes ago Up 31 minutes 0.0.0.0:8080->8080/tcp sick_pasteur
3.2.6 埠對映
# 停止
[[email protected] ~]# docker stop de7ab7fb702e
de7ab7fb702e
# 刪除
[[email protected] ~]# docker rm de7ab7fb702e
de7ab7fb702e
# 啟動
[[email protected] ~]# docker run -p 3306:3306 --name mysql3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
933f531b447658e749a7da32aafb9b42e8b07c36df0038615b9b4195f973a42a
# 檢視正在執行的容器
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
933f531b4476 mysql "docker-entrypoint.s 41 seconds ago Up 40 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql3306
46c93fd0a543 tomcat "catalina.sh run" 35 minutes ago Up 35 minutes 0.0.0.0:8080->8080/tcp sick_pasteur
3.3 客戶端連線
3.3.1 連線失敗
3.3.2 失敗原因
- 服務端版本高
- 客戶端版本低
3.3.3 解決方法
- 升級客戶端
- 降級服務端
3.3.4 解決步驟
# 列表
[[email protected] ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
tomcat latest 9a5cb5ecdb4e 2 weeks ago 462.7 MB
mysql latest 4eabe6a48367 3 weeks ago 485.5 MB
# 將mysql移除
[[email protected] ~]# docker rmi 4eabe6a48367
# 下載5.6版本
[[email protected] ~]# docker pull mysql:5.6
# 啟動
[[email protected] ~]# docker run -p 3306:3306 --name mysql3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
f2949ffb03164381f477b34130e980bc12af77e527015bf7f87d88c166a2d80c