1. 程式人生 > >Docker常用命令小記

Docker常用命令小記

除了基本的<font color="blue">docker pull</font>、<font color="blue">docker image</font>、<font color="blue">docker ps</font>,還有一些命令及引數也很重要,在此記錄下來避免遺忘。

環境資訊

以下是本次操作的環境:

  1. 作業系統:CentOS Linux release 7.7.1908
  2. Docker:19.03.2

假設當前環境正執行著兩個容器,接下來的操作都基於這兩個容器進行:

[root@vostro harbor]# docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS               NAMES
11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"        6 seconds ago       Up 5 seconds        8080/tcp            inspiring_ardinghelli
21c0499ccc76        nginx                        "nginx -g 'daemon of…"   29 minutes ago      Up 29 minutes       80/tcp              strange_zhukovsky

整體資訊

<font color="blue">docker info</font>用來看整體資訊:

[root@vostro harbor]# docker info
Client:
 Debug Mode: false

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 19
 Server Version: 19.03.2
 Storage Driver: overlay
  Backing Filesystem: xfs
  Supports d_type: true
...

釋放空間

  1. <font color="blue">docker system prune</font>會刪除以下內容: a. 已經停止的容器; b. 未被使用的網路; c. 所有未打標籤的映象; d. 構建映象時產生的快取; 注意:<font color="red">此命令刪除的東西過多,所以要慎用</font>
  2. 刪除已經停止的容器:<font color="blue">docker container prune</font>
  3. 刪除未被使用的網路:<font color="blue">docker network prune</font>
  4. 刪除沒有Tag的映象:<font color="blue">docker image prune</font>
  5. 刪除沒有容器的映象:<font color="blue">docker image prune -a</font>
  6. 刪除未被使用的資料卷:<font color="blue">docker volume prune</font>

過濾

執行<font color="blue">docker ps</font>的時候會列出所有執行狀態的容器,有時我們只想看自己關注的,這時可以對結果做過濾:

  1. 按容器ID過濾:<font color="blue">docker ps -f id=11548ac31116</font>
[root@vostro harbor]# docker ps -f id=11548ac31116
CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS              PORTS               NAMES
11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"   4 minutes ago       Up 4 minutes        8080/tcp            inspiring_ardinghelli
  1. 按容器名稱過濾:<font color="blue">docker ps -f name=inspiring_ardinghelli</font>
[root@vostro harbor]# docker ps -f name=inspiring_ardinghelli
CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS              PORTS               NAMES
11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"   7 minutes ago       Up 7 minutes        8080/tcp            inspiring_ardinghelli
  1. 按映象過濾,這種過濾再細分有三種: a. 按映象名和TAG過濾:<font color="blue">docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk</font> b. 按映象ID過濾:<font color="blue">docker ps -f ancestor=4965bfab1881</font> c. 按照映象摘要資訊過濾:<font color="blue">docker ps -f ancestor=tomcat@sha256:67a9904e3ceb03abc50db7b374db7362f7e44d08a41488dd24c2bb14df8989a3</font> <br>映象的摘要資訊如何獲取呢?執行命令<font color="blue">docker inspect tomcat:9.0.26-jdk8-openjdk</font>可以獲取映象的詳情,如下圖所示,紅框中就是摘要資訊: 在這裡插入圖片描述
  2. 按容器狀態過濾:<font color="blue">docker ps -f status=running</font>,狀態有這些:created, restarting, running, removing, paused, exited, dead
  3. 還有其他的過濾條件,不過不常用到,如下圖: 在這裡插入圖片描述

資訊獲取

  1. 檢視容器所佔硬碟空間:<font color="blue">docker ps -s</font> 在這裡插入圖片描述 上圖紅框中就是容器資源佔用情況,<font color="blue">508MB</font>表示:映象大小+容器自身大小,40KB表示容器自身所佔資源大小;
  2. 檢視容器資訊時只看某些欄位,例如只看容器ID、映象、容器名稱這三列:<font color="blue">docker ps --format "table {{.ID}}: {{.Image}}: {{.Names}}"</font>
[root@vostro harbor]# docker ps --format "table {{.ID}}: {{.Image}}: {{.Names}}"
CONTAINER ID: IMAGE: NAMES
11548ac31116: tomcat:9.0.26-jdk8-openjdk: inspiring_ardinghelli
21c0499ccc76: nginx: strange_zhukovsky

下圖展示了所有的列的名稱: 在這裡插入圖片描述 3. 如下圖紅框所示,當欄位內容過長時,展示的是部分內容,如果想檢視完整資訊請使用<font color="blue">docker ps --no-trunc</font> 在這裡插入圖片描述 4. 在使用<font color="blue">docker history</font>命令檢視映象的構建資訊時,也會因為內容過長而被省略,如下圖,此時也能用<font color="blue">--no-trunc</font>引數看到被省略的資訊: 在這裡插入圖片描述

組合使用

  1. 只顯示Tomcat容器的ID欄位:<font color="blue">docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q</font>
[root@vostro harbor]# docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q
11548ac31116
  1. 上面的命令可以得到Tomcat容器的ID欄位,如果我們想停止該容器,將上述命令和<font color="blue">docker stop</font>組合起來使用即可:<font color="blue">docker stop $(docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q)</font>
[root@vostro harbor]# docker stop $(docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q)
11548ac31116
[root@vostro harbor]# docker ps -a
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                        PORTS               NAMES
11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"        About an hour ago   Exited (143) 43 seconds ago                       inspiring_ardinghelli
21c0499ccc76        nginx                        "nginx -g 'daemon of…"   2 hours ago         Up 2 hours                    80/tcp              strange_zhukovsky

可見tomcat容器已經停止。

以上是我日常工作中經常用到的docker命令,更多的資訊請參考官方文件:https://docs.docker.com/engine/reference/commandline/docker/

歡迎關注我的公眾號: