1. 程式人生 > >3-3.4 刪除映象

3-3.4 刪除映象

 rmi命令用於刪除映象。若不指定標籤,則刪除latest標籤

docker rmi  [選項] <註冊名稱>/<映象名稱,id>:<標籤>

選項:

-f、--force=false 強制刪除映象
--no-prune=false 不刪除不帶標籤的父級映象

1. 使用映象標籤刪除映象

$ docker rmi hello-world
$ docker rmi user/hello:latest
$ docker rmi 10.0.217.122:6666/hello:latest  #遠端倉庫映象

刪除所有映象與刪除容器類似

$ docker rmi `docker images -aq`

 當同一個映象有多個標籤時, docker rmi 命令只刪除該映象多個標籤中指定的標籤,並不影響映象檔案。該映象的其他標籤還是存在的,可以使用 docker images 檢視。

但當映象只剩一個標籤時,若使用 docker rmi 命令會徹底刪除該映象。

2. 使用映象ID 刪除映象

當使用 docker rmi 命令後面跟上映象ID時,會先刪除所有指向該映象的標籤,然後刪除該映象檔案本身。

注意,當該映象建立的容器存在時,映象檔案預設是無法刪除的,例如:

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                          NAMES
22f3abf9ee16        docker.io/centos    "/bin/bash"         32 minutes ago      Up 32 minutes       0.0.0.0:8080->8080/tcp, 0.0.0.0:8000->80/tcp   hello

存在一個以 docker.io/centos 映象為基礎建立的容器 hello,若此時刪除該 docker.io/centos映象,Docker 會提示有容器正在執行,無法刪除:

docker rmi docker.io/centos
Error response from daemon: conflict: unable to remove repository reference "docker.io/centos" (must force) - container 22f3abf9ee16 is using its referenced image 49f7960eb7e4

當然可以強制刪除映象,使用 -f(--force)引數:

docker rmi -f docker.io/centos

這種操作是不規範的,會有標籤<none>的臨時映象存在,被強制刪除的映象生成新的ID存在系統中。

因此,先刪除依賴該映象的所有容器,再刪除該映象。先刪除容器:

docker rm hello

使用ID刪除映象:

docker rmi 49f7960eb7e4

再檢視映象,發現該ID對應的映象已被刪除。