1. 程式人生 > >docker 容器和映象管理

docker 容器和映象管理

docker容器管理

最開始在學習docker的時候,亂建立了很多容器,結果檢視所有容器的時候,自己嚇了一跳。下面介紹docker容器管理相關命令。(命令可能需要使用sudo)

刪除容器

檢視所有容器

首先注意區分這兩條命令,根據docker官方文件的教程:
docker container ls # List all running containers
docker container ls -a # List all containers, even those not running
所以我們應該使用 docker container ls -a 檢視所有容器
可以看到我這裡建立了很多IMAGE是4f03fc6e74f6的,重複的容器。(都是當時沒好好學,丟人啊)
檢視所有容器

(docker ps [OPTIONS]命令有別名docker container ls [OPTIONS])

刪除一個容器

格式:docker rm container-id
栗子:docker rm 82523c7dcf52
Usage: docker rm [OPTIONS] CONTAINER [CONTAINER…]

我們還需要知道檢視容器id的命令

檢視容器id的命令

格式:docker ps -a
檢視容器id

一個一個刪除容器,效率太低了。(是啊,你之前建立了那麼多重複的容器,當然一個一個刪除起來麻煩啊)
確實有一次刪除多個容器的命令。

一次刪除多個容器

格式:docker rm $( docker ps –a –f ancestor=image-id )
其中ancestor的含義如下,來源docker官方文件。

ancestor    Filters containers which share a given image as an ancestor. Expressed as <image-name>[:<tag>], <image id>, or <[email protected]>

解釋下這個命令,docker ps -a是列出所有容器,-f是設定filter,filter的格式是key=value,鍵值對的形式,如果有多個filter,需要傳遞多個引數
(e.g. –filter “foo=bar” –filter “bif=baz”)
(沒錯,這就是官網的教程2333)
通過docker ps -a -f得到,同源映象的所有容器。(雖然貌似這裡混入了一個奇怪的東西,但是我懶,沒有去探索為什麼。)
同源映象的容器


得到了要刪除的容器的id,直接docker rm就好了。
這裡寫圖片描述
docker ps -a再次檢視所有容器,刪除成功。
這裡寫圖片描述

刪除映象

檢視所有映象

命令 docker image ls -a
(沒錯,又是之前沒好好學,建立了很多重複的IMAGE,當執行下載Image的命令後,在本地檢視Images時,下載的Image的Repository和Tag都為<none>
檢視所有映象

停止所有容器命令

先提一下停止所有容器的命令
命令: docker stop $(docker ps -a -q)
其中 -q 只顯示數字ID

刪除映象

直接暴力刪除映象是不行的哦,刪除image前需要刪除依賴這個image的所有容器。刪除容器前需要保證容器是停止的。

暴力刪除映象

刪除映象命令

Usage:docker rmi [OPTIONS] IMAGE [IMAGE…]
栗子:docker rmi image-id
刪除一個映象

使用圖形化管理工具

幾乎所有容器開發商都有自己的 UI 管理介面。這些 UI 共同的特點就是就是本身以一個容器的方式存在,例如:Portainer。
啟動 portainer
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

這裡最關鍵的部分 -v /var/run/docker.sock:/var/run/docker.sock 容器與主機共享了檔案 /var/run/docker.sock 從而,容器獲得了 docker 駐守(daemon)程序 REST API SDK 入口。

在瀏覽器輸入 http://localhost:9000 就進入了圖形管理介面,下圖是Containers介面。
portainer

成功刪除
portainer刪除容器