desktop docker 无法卸载_关于Docker:Docker – 无法移除死容器
我無法刪除死容器,它在重新啟動Docker服務后再次出現。
docker ps -a
CONTAINER ID ? ? ? ? STATUS
11667ef16239 ? ? ? ? Dead
然后
docker rm -f 11667ef16239
然后,當我運行docker ps -a時,沒有Docker容器顯示。
docker ps -a
CONTAINER ID ? ? ? ? STATUS
但是,當我重新啟動docker服務時:
service docker restart
并再次運行docker ps -a:
docker ps -a
CONTAINER ID ? ? ? ? STATUS
11667ef16239 ? ? ? ? Dead
嗨,這仍然是當前的問題,但目前接受的答案不再有效,而且相當危險。 這是一個很好的答案,所以如果可能的話你會接受那個答案,這是公平的
實際上這些日子發生了輕微變化,以便擺脫那些可能會嘗試卸載那些被阻止的文件系統以釋放它們的死容器
所以,如果你收到這樣的消息
Error response from daemon: Cannot destroy container elated_wozniak: Driver devicemapper failed to remove root filesystem 656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3: Device is Busy
跑吧
umount /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3
你可以在那之后正常刪除容器
這個感覺就像最好,最安全的!
我只是重新啟動了系統并且我已經重新登錄..容器已經消失了。
這對我有用,雖然我不得不重新啟動docker服務以使docker ps -a的輸出實際為空。
兩年后,這篇文章仍然具有現實意義?;藘蓚€小時試圖找到一個解決方案然后遇到了這個:github.com/moby/moby/issues/3786#issuecomment-33471966。要卸載所有devicemapper容器,請使用umount $(grep devicemapper procmounts | awk {print$2} | sort -r)
最有可能的是,當守護進程試圖清理容器時發生錯誤,他現在陷入了這種"僵尸"狀態。
我擔心你唯一的選擇是手動清理它:
$ sudo rm -rf /var/lib/docker//11667ef16239.../
其中是驅動程序的名稱(aufs,overlay,btrfs或devicemapper)。
通過發出一個docker命令而不是訴諸于sudo rm ...對于像我這樣在我們的產品盒上沒有sudo權限的人來說,這個功能可以實現這個功能。
您也可以使用此命令刪除dead容器
docker rm $(docker ps --all -q -f status=dead)
但是,我真的不確定為什么以及如何創建dead容器。每當我得到dead容器時,這個錯誤似乎與https://github.com/typesafehub/mesos-spark-integration-tests/issues/34有關
[更新]
通過Docker 1.13更新,我們可以輕松刪除不需要的容器,懸空圖像
$ docker system df #will show used space, similar to the unix tool df
$ docker system prune # will remove all unused data.
您可能需要添加--force param才能正常工作
@Akvel它沒有它們。它已經死了,所以沒有依賴的過程。
docker system prune的表現超出預期,但解決了這個問題。如OP中所述,docker rm --force不起作用。
正如@rdupz所暗示的,docker system prune是危險的,請參閱此評論,了解如何使用-a刪除甚至命名的卷。它還會刪除網絡,這通常不是您想要的。最好在1.13+中使用docker image prune和docker volume prune。
此命令提供語法錯誤。我認為你錯放了力量-f param
刪除死容器(CentOS 7上的docker 17.06.1-ce)時出現以下錯誤:
Error response from daemon: driver"overlay" failed to remove root filesystem for :
remove /var/lib/docker/overlay//merged: device or resource busy
以下是我修復它的方法:
1.檢查哪些其他進程也在使用docker資源
$ grep docker /proc/*/mountinfo
輸出類似這樣的東西,其中/proc/之后的數字是pid:
/proc/10001/mountinfo:179...
/proc/10002/mountinfo:149...
/proc/12345/mountinfo:159 149 0:36 / /var/lib/docker/overlay/...
2.檢查上述pid的進程名稱
$ ps -p 10001 -o comm=
dockerd
$ ps -p 10002 -o comm=
docker-containe
$ ps -p 12345 -o comm=
nginx ? <<
所以,帶有pid 12345的nginx似乎也在使用/var/lib/docker/overlay/...,這就是我們無法刪除相關容器并獲得device or resource busy錯誤的原因。 (有關nginx如何與docker容器共享相同的mount命名空間,請參見此處,以防止刪除它。)
3.停止nginx然后我可以成功刪除容器。
$ sudo service nginx stop
$ docker rm
謝謝你先生的nginx信息,我有同樣的問題,它生氣了我很多次,我也遇到了與DNS進程相同的問題(命名),不得不:systemctl restart命名
我得到了同樣的問題,兩個答案都沒有幫助。
對我有幫助的只是創建缺少的目錄并刪除它們:
mkdir /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3
mkdir /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3-init
docker rm 656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3
強行拆除容器為我工作。
docker rm -f
筆記:
請注意,此命令可能會拋出此錯誤
Error response from daemon: Driver devicemapper failed to remove root filesystem : Device is Busy
盡管有此消息,仍應刪除您的死容器設備映射器的安裝。也就是說,您將不再訪問此路徑:
/var/lib/docker/devicemapper/mnt/
grep 656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3 /proc/*/mountinfo
然后找到656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3and的pid并殺死它
其中proc之后的數字是pid
我已經嘗試了上面的建議,但沒有奏效。
然后
我試試:docker system prune -a,它第一次沒用
我重新啟動系統
我再試一次docker system prune -a。這次它有效。它會發出一條警告信息,最后問"你確定要繼續嗎?是嗎?答案。答案:是的。時間到最后,死人的容器都消失了。
使用docker ps -a進行驗證
重要 - 這是核選項,因為它會破壞所有容器+圖像
這對我有用。謝謝!我還必須重新啟動系統。
嘗試運行以下命令。它總是適合我。
# docker volume rm $(docker volume ls -qf dangling=true)
# docker rm $(docker ps -q -f 'status=exited')
執行上述命令后,重啟docker by,
# service docker restart
嘗試了以上所有(重啟/重啟docker)。
所以這是錯誤的docker rm:
$ docker rm 08d51aad0e74
Error response from daemon: driver"devicemapper" failed to remove root filesystem for 08d51aad0e74060f54bba36268386fe991eff74570e7ee29b7c4d74047d809aa: remove /var/lib/docker/devicemapper/mnt/670cdbd30a3627ae4801044d32a423284b540c5057002dd010186c69b6cc7eea: device or resource busy
然后我做了以下幾點:
$ ?grep docker /proc/*/mountinfo | grep 958722d105f8586978361409c9d70aff17c0af3a1970cb3c2fb7908fe5a310ac
/proc/20416/mountinfo:629 574 253:15 / /var/lib/docker/devicemapper/mnt/958722d105f8586978361409c9d70aff17c0af3a1970cb3c2fb7908fe5a310ac rw,relatime shared:288 - xfs /dev/mapper/docker-253:5-786536-958722d105f8586978361409c9d70aff17c0af3a1970cb3c2fb7908fe5a310ac rw,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota
這是違規過程的PID,讓它忙碌 - 20416(/ proc /之后的項目)
所以我做了一個ps -p,我驚訝地發現:
[devops@dp01app5030 SeGrid]$ ps -p 20416
PID TTY ? ? ? ? ?TIME CMD
20416 ? ? ? ? ?00:00:19 ntpd
一個真正的WTF時刻。所以我把問題與Google解決了,發現了這個問題:
然后找到了這個https://github.com/docker/for-linux/issues/124
事實證明我必須重新啟動ntp守護進程并修復了這個問題!
對于Windows:
del D:\ProgramData\docker\containers\{CONTAINER ID}
del D:\ProgramData\docker\windowsfilter\{CONTAINER ID}
然后重啟Docker Desktop
這里有很多答案,但沒有一個涉及對我有用的(快速)解決方案。
我正在使用Docker版本1.12.3,構建6b644ec。
我只是運行了docker rmi來從死容器來的圖像。然后docker ps -a顯示死容器完全丟失。
然后,當然,我只是重新拉動圖像并再次運行容器。
我不知道它是如何在這種狀態下發現的,但它是......
試試,它對我有用:
$ docker ps -a
CONTAINER ID ? ? ? ?IMAGE ? ? ? ? ? ? ? COMMAND ? ? ? ? ? ? ? ? ?CREATED ? ? ? ? ? ? STATUS ? ? ? ? ? ? ?PORTS ? ? ? ? ? ? ? NAMES
4f13b53be9dd ? ? ? ?5b0bbf1173ea ? ? ? "/opt/app/netjet..." ? 5 months ago ? ? ? ?Dead ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?appname_chess
$ docker rm $(docker ps --all -q -f status=dead)
Error response from daemon: driver"devicemapper" failed to remove root filesystem for 4f13b53be9ddef3e9ba281546aef1c544805282971f324291a1dc91b50eeb440: failed to remove device 487b4b73c58d19ef79201cf6d5fcd6b7316e612e99c14505a6bf24399cad9795-init: devicemapper: Error running DeleteDevice dm_task_run failed
su
cd /var/lib/docker/containers
[root@localhost containers]# ?ls -l
total 0
drwx------. 1 root root 312 Nov 17 08:58 4f13b53be9ddef3e9ba281546aef1c544805282971f324291a1dc91b50eeb440
[root@localhost containers]# rm -rf 4f13b53be9ddef3e9ba281546aef1c544805282971f324291a1dc91b50eeb440
systemctl restart docker
試試這個對我有用:
docker rm -f
eg. docker rm -f 11667ef16239
嘗試殺死它,然后刪除> :)即
docker kill $(docker ps -q)
嘗試這個它在centos上為我工作
1)docker container ls -a
為您提供一個容器列表,檢查您要刪除的狀態
2)docker container rm -f 97af2da41b2b
不是一個大粉絲力旗,但做的工作
檢查它是否工作只需再次激活命令或列出它。
3)繼續,直到我們清除所有死容器
在Centos7和Docker 1.8.2上運行,我無法使用Zgr3doo的解決方案來卸載devicemapper(我認為我得到的響應是沒有掛載/找到卷。)
我認為sk8terboi87ツ的回答也有類似的事情:我相信消息是無法卸載卷,并列出了它試圖卸載的特定卷以刪除死容器。
對我有用的是先停止docker,然后手動刪除目錄。我能夠通過上一個命令的錯誤輸出確定它們是哪些刪除所有死容器。
對上面含糊不清的描述道歉。在我處理了死箱之后的幾天,我發現了這個問題。 ..但是,我今天注意到了類似的模式:
$ sudo docker stop fervent_fermi; sudo docker rm fervent_fermi fervent_fermi
Error response from daemon: Cannot destroy container fervent_fermi: Driver devicemapper failed to remove root filesystem a11bae452da3dd776354aae311da5be5ff70ac9ebf33d33b66a24c62c3ec7f35: Device is Busy
Error: failed to remove containers: [fervent_fermi]
$ sudo systemctl docker stop
$ sudo rm -rf /var/lib/docker/devicemapper/mnt/a11bae452da3dd776354aae311da5be5ff70ac9ebf33d33b66a24c62c3ec7f35
$
我注意到,當使用這種方法時,docker重新創建了具有不同名稱的圖像:
a11bae452da3 ? ? trend_av_docker ?"bash" ? 2 weeks ago ? ?Dead ? ?compassionate_ardinghelli
這可能是由于容器發出了restart = always,但容器ID與先前使用我強制刪除的卷的容器的ID相匹配。刪除這個新容器沒有困難:
$ sudo docker rm -v compassionate_ardinghelli
compassionate_ardinghelli
備選方案2:將其重新編寫為獨立的答案。這樣做可以參考其他答案 - 但要具體說明你在談論哪個答案,例如:按作者姓名。從"我還不能評論......"開始,幾乎可以保證你的帖子被刪除。如果您有一些有用的東西可以作為答案添加 - 只需這樣做! (并且到那里再獲得9個代表!)祝你好運。
用于刪除所有死容器
<5233>
刪除所有已退出的容器docker rm -f $(docker ps --all -q -f status=exited)
因為我有-f是必要的
總結
以上是生活随笔為你收集整理的desktop docker 无法卸载_关于Docker:Docker – 无法移除死容器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bool类型数组转换成一个整数_「PHP
- 下一篇: Android Studio Gradl