簡體   English   中英

Docker錯誤 - 無法刪除容器

[英]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網站, 解決方案將是

  1. 停止容器
  2. 重新啟動服務器
  3. 取出容器

或者,如果您正在運行代理規則,則必須首先刪除它們:

  1. 刪除代理規則,停止容器,刪除容器 - >錯誤
  2. 停止容器,刪除代理規則,刪除容器 - >工作

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM