最近我在使用Docker時遇到了一個問題:無法卸載容器。當(dāng)我嘗試使用docker rm命令刪除容器時,終端輸出“Error response from daemon: You cannot remove a running container”錯誤信息。不管我是使用docker stop還是docker kill命令先停止容器,再嘗試刪除,都一樣。
經(jīng)過一番排查和搜索,我終于找到了解決方法。原來是容器的一個標(biāo)記導(dǎo)致了問題。Docker在啟動容器時會給容器打上一個名為“ExitCommand”的標(biāo)記,這個標(biāo)記會在容器停止時生效,執(zhí)行一個命令。但是這個標(biāo)記有時會出現(xiàn)異常,導(dǎo)致容器不能被正常卸載。
解決方法是使用docker ps -a命令查看所有容器的狀態(tài),找到含有“Exited (XXX
)**XXX
”標(biāo)記的容器(其中XXX
代表一個數(shù)字)。這個數(shù)字就是“ExitCommand”的命令碼,記下來。然后使用docker rm命令刪除容器時,加上參數(shù)-fXXX
,表示強制刪除該標(biāo)記的容器。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d5c8aca04a5a nginx "/docker-entrypoint.…" 2 hours ago Exited (0) 2 hours ago musing_solomon b3d4fe6ced7f ubuntu "/bin/bash" 4 hours ago Exited (**127**) 4 hours ago infallible_bassi 7de45d864cd8 postgres "docker-entrypoint.s…" 4 days ago Exited (**2**) 4 days ago upbeat_murdock $ docker rm -f d5c8aca04a5a $ docker rm -f b3d4fe6ced7f $ docker rm -f 7de45d864cd8
注意:在添加-f參數(shù)時,要將XXX
替換為實際的命令碼。
通過這個方法,我終于成功卸載了不該存在的容器。希望這篇文章對正在使用Docker的朋友有所幫助。