[英]Docker error - cannot remove a container
我最近沒有升級Docker。 我曾經能夠毫無錯誤地刪除容器。 我現在一直都這樣:
docker rm -f 05344fa394a4
Error response from daemon: driver "overlay" failed to remove root filesystem for
05344fa394a43e5080deb1a43fdeab3a6f141038069f1a49209e29ec8f06a20c:
remove /var/lib/docker/overlay/c9eb21a91ae1a37a121855a1ef65a89593994dc036affa9ff295b59b4eca1af5/merged:
device or resource busy
我基本上必須重新啟動( systemctl restart docker
不修復)才能成功刪除並繼續。 任何人都對可能出錯的東西有任何見解?
我使用Docker 17.06以root
身份運行Centos 7.3。 /var/lib/docker
和/var/lib/docker/overlay
中的所有內容都由root:root
擁有root:root
是保護700. [ /var/lib/docker/network
實際上是750]
這是docker正在處理的一個已知問題 。 我建議升級到更新的內核(相當於7.4厘米是一個很大的改進)並遷移到overlay2。 一旦18.03版本發布,我建議升級,因為docker端的一些修復程序將包含在那里。
刪除容器導致此問題時,您可以嘗試強制選項( docker rm -f
),該選項通常仍會報告錯誤,但最終會在幾秒鍾后刪除容器。 您可能會有一些剩余部分最好通過重新啟動進行清理,但它可能有助於解決文件系統鎖定問題導致的任何其他問題。
我在RH和CentOS系統上看到的改進docker的另一件事是創建一個文件:
$ cat /etc/systemd/system/docker.service.d/override.conf
[Service]
MountFlags=slave
這應該是當前版本的docker中的默認值,但您可能已從沒有它的舊版本中復制了您的單元文件。 要應用該文件,您需要以root身份執行systemctl daemon-reload && systemctl restart docker
。
根據Plesk網站, 解決方案將是
或者,如果您正在運行代理規則,則必須首先刪除它們:
在a)的情況下,如果您已經刪除了代理規則,則創建另一個容器並向新的容器添加新的代理規則(相同的域/子域)將允許您立即刪除舊的代理規則。
這似乎與容器停止后修改nginx配置文件有關。
只需嘗試刪除目錄,該目錄包含太長的子目錄路徑。
例如
docker rm -f <container_name>
它給出如下錯誤:
從后台程序錯誤反應:驅動程序“疊加”無法刪除根文件系統的aa867db5afb0b70c5680f3265cf6dd4d02816190e23123d8c97f1e7b502fc928:LSTAT /dockerimgs/docker/overlay/429a98b6053371c82902a2ad845b069037f2403b87c5632ad952ec2879/upper/opt/catalog1/catalog2/catalog3/.../.../.../catalogN ... 文件名太長了
因此,讓該容器停止,只需轉到您的容器用作其文件系統的目錄( /dockerimgs/docker/overlay/429a98b6053371c82902a2ad845b069037f2403b87c5632ad952ec2879/...
)並刪除“ /dockerimgs/docker/overlay/429a98b6053371c82902a2ad845b069037f2403b87c5632ad952ec2879/...
docker rm
”上顯示的錯誤消息中提到的目錄。 ”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.