1. 程式人生 > >2 Docker常用命令與操作

2 Docker常用命令與操作

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