Docker經常使用命令小記

除了基本的docker pulldocker imagedocker ps,還有一些命令及參數也很重要,在此記錄下來避免遺忘。nginx

環境信息

如下是本次操做的環境:程序員

  1. 操做系統:CentOS Linux release 7.7.1908
  2. Docker:19.03.2

假設當前環境正運行着兩個容器,接下來的操做都基於這兩個容器進行:docker

[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
...複製代碼

釋放空間

  1. docker system prune會刪除如下內容:
    a. 已經中止的容器;
    b. 未被使用的網絡;
    c. 全部未打標籤的鏡像;
    d. 構建鏡像時產生的緩存;
    注意:此命令刪除的東西過多,因此要慎用
  2. 刪除已經中止的容器:docker container prune
  3. 刪除未被使用的網絡:docker network prune
  4. 刪除沒有Tag的鏡像:docker image prune
  5. 刪除沒有容器的鏡像:docker image prune -a
  6. 刪除未被使用的數據卷:docker volume prune

過濾

執行docker ps的時候會列出全部運行狀態的容器,有時咱們只想看本身關注的,這時能夠對結果作過濾:tomcat

  1. 按容器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複製代碼
  1. 按容器名稱過濾: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複製代碼
  1. 按鏡像過濾,這種過濾再細分有三種:
    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能夠獲取鏡像的詳情,以下圖所示,紅框中就是摘要信息:
    在這裏插入圖片描述
  2. 按容器狀態過濾:docker ps -f status=running,狀態有這些:created, restarting, running, removing, paused, exited, dead
  3. 還有其餘的過濾條件,不過不經常使用到,以下圖:
    在這裏插入圖片描述

信息獲取

  1. 查看容器所佔硬盤空間:docker ps -s
    在這裏插入圖片描述
    上圖紅框中就是容器資源佔用狀況,508MB表示:鏡像大小+容器自身大小,40KB表示容器自身所佔資源大小;
  2. 查看容器信息時只看某些字段,例如只看容器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複製代碼

下圖展現了全部的列的名稱:在這裏插入圖片描述網絡

  1. 以下圖紅框所示,當字段內容過長時,展現的是部份內容,若是想查看完整信息請使用docker ps --no-trunc
    在這裏插入圖片描述
  2. 在使用docker history命令查看鏡像的構建信息時,也會由於內容過長而被省略,以下圖,此時也能用--no-trunc參數看到被省略的信息:
    在這裏插入圖片描述

組合使用

  1. 只顯示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複製代碼
  1. 上面的命令能夠獲得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容器已經中止。tcp

以上是我平常工做中常常用到的docker命令,更多的信息請參考官方文檔:https://docs.docker.com/engine/reference/commandline/docker/spa

歡迎關注個人公衆號:程序員欣宸

相關文章
相關標籤/搜索