天天看點

docker删除鏡像遇到 conflict: unable to remove / conflict: unable to delete

檢視鏡像:

docker删除鏡像遇到 conflict: unable to remove / conflict: unable to delete

删除失敗:

$ docker rmi centos:latest                                                                                                                              
Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container 9270e5028f22 is using its referenced image 1e1148e4cc2c

$ docker rmi 1e1148e4cc2c
Error response from daemon: conflict: unable to delete 1e1148e4cc2c (cannot be forced) - image has dependent child images
           

docker ps檢視發現沒有在運作的。

于是檢視依賴關系:

$ docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q )
[antony314/centos:v1] sha256:47dd3157ad261529904d1e44ceb974c674a9542e6510ea0e1c784346d2c57713 sha256:1e1148e4cc2c148c6890a18e3b2d2dde41a6745ceb4e5fe94a923d811bf82ddb
[antony/ubuntu:latest] sha256:91e3b07b358dc003248553e7d40275897acbfce7bdf0524ece6ba797e3816251 sha256:9b9cb95443b5f846cd3c8cfa3f64e63b6ba68de2618a08875a119c81a8f96698
[hello-world:latest] sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e 
[ubuntu:14.04] sha256:7e4b16ae8b23e239ab03a413febb51e204e294cb2bf0e45cc4aa7bed7d7f704e 
[centos:latest] sha256:1e1148e4cc2c148c6890a18e3b2d2dde41a6745ceb4e5fe94a923d811bf82ddb 
[ubuntu:15.10] sha256:9b9cb95443b5f846cd3c8cfa3f64e63b6ba68de2618a08875a119c81a8f96698 
           

确實自己新commit的antony314/centos是依賴了官方鏡像centos,

于是先删除antony314/centos:

注意不是latest需要帶上tag名稱,這裡是v1

docker删除鏡像遇到 conflict: unable to remove / conflict: unable to delete

看起來是成功了,繼續删除原image:

$  docker rmi centos:latest 
Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container 9270e5028f22 is using its referenced image 1e1148e4cc2c

$ docker rmi 1e1148e4cc2c
Error response from daemon: conflict: unable to delete 1e1148e4cc2c (must be forced) - image is being used by stopped container 9270e5028f22
           

注意這裡用image id删除的時候報錯的内容不一樣了,看來還是container沒有關閉。

但是一樣,用docker ps 看還是沒有在運作的容器:

docker删除鏡像遇到 conflict: unable to remove / conflict: unable to delete

但是檢視所有的話,docker ps -a:

docker删除鏡像遇到 conflict: unable to remove / conflict: unable to delete

這大概就是執行個體化的和運作中的差別。

于是仍然先删除container,最後終于删除鏡像成功:

$ docker rm 67a06fa62c7d
$ docker rm 9270e5028f22
$ docker rmi 1e1148e4cc2c
Untagged: centos:latest
Untagged: [email protected]:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Deleted: sha256:1e1148e4cc2c148c6890a18e3b2d2dde41a6745ceb4e5fe94a923d811bf82ddb
Deleted: sha256:071d8bd765171080d01682844524be57ac9883e53079b6ac66707e192ea25956
           
docker删除鏡像遇到 conflict: unable to remove / conflict: unable to delete

最後,附幾個常用停止和删除容器的指令:

docker stop containerId   // containerId 是容器的ID

docker rm containerId   // containerId 是容器的ID

docker stop $(docker ps -a -q)   // stop停止所有容器 

docker rm $(docker ps -a -q)   // remove删除所有容器