除了基本的docker pull、docker image、docker ps,還有一些命令及參數也很重要,在此記錄下來避免遺忘。 環境信息 以下是本次操作的環境: 1. 操作系統:CentOS Linux release 7.7.1908 2. Docker:19.03.2 假設當前環境正運行著兩 ...
除了基本的docker pull、docker image、docker ps,還有一些命令及參數也很重要,在此記錄下來避免遺忘。
環境信息
以下是本次操作的環境:
- 操作系統:CentOS Linux release 7.7.1908
- 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
整體信息
docker info用來看整體信息:
[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
...
釋放空間
- docker system prune會刪除以下內容:
a. 已經停止的容器;
b. 未被使用的網路;
c. 所有未打標簽的鏡像;
d. 構建鏡像時產生的緩存;
註意:此命令刪除的東西過多,所以要慎用
- 刪除已經停止的容器:docker container prune
- 刪除未被使用的網路:docker network prune
- 刪除沒有Tag的鏡像:docker image prune
- 刪除沒有容器的鏡像:docker image prune -a
刪除未被使用的數據捲:docker volume prune
過濾
執行docker ps的時候會列出所有運行狀態的容器,有時我們只想看自己關註的,這時可以對結果做過濾:- 按容器ID過濾:docker ps -f id=11548ac31116
[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
- 按容器名稱過濾:docker ps -f name=inspiring_ardinghelli
[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
- 按鏡像過濾,這種過濾再細分有三種:
a. 按鏡像名和TAG過濾:docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk
b. 按鏡像ID過濾:docker ps -f ancestor=4965bfab1881
c. 按照鏡像摘要信息過濾:docker ps -f ancestor=tomcat@sha256:67a9904e3ceb03abc50db7b374db7362f7e44d08a41488dd24c2bb14df8989a3
鏡像的摘要信息如何獲取呢?執行命令docker inspect tomcat:9.0.26-jdk8-openjdk可以獲取鏡像的詳情,如下圖所示,紅框中就是摘要信息:
- 按容器狀態過濾:docker ps -f status=running,狀態有這些:created, restarting, running, removing, paused, exited, dead
- 還有其他的過濾條件,不過不常用到,如下圖:
信息獲取
- 查看容器所占硬碟空間:docker ps -s
上圖紅框中就是容器資源占用情況,508MB表示:鏡像大小+容器自身大小,40KB表示容器自身所占資源大小; - 查看容器信息時只看某些欄位,例如只看容器ID、鏡像、容器名稱這三列:docker ps --format "table {{.ID}}: {{.Image}}: {{.Names}}"
[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
下圖展示了所有的列的名稱:
- 如下圖紅框所示,當欄位內容過長時,展示的是部分內容,如果想查看完整信息請使用docker ps --no-trunc
在使用docker history命令查看鏡像的構建信息時,也會因為內容過長而被省略,如下圖,此時也能用--no-trunc參數看到被省略的信息:
組合使用
- 只顯示Tomcat容器的ID欄位:docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q
[root@vostro harbor]# docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q
11548ac31116
- 上面的命令可以得到Tomcat容器的ID欄位,如果我們想停止該容器,將上述命令和docker stop組合起來使用即可:docker stop $(docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q)
[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/