Docker错误 - 无法删除容器

时间:2018-02-07 13:26:59

标签: docker docker-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在Centos 7.3上运行root/var/lib/docker/var/lib/docker/overlay所拥有的所有内容都归root:root所有,是保护700. [/var/lib/docker/network实际上是750]

3 个答案:

答案 0 :(得分:2)

这是由docker处理的known issue。我建议升级到更新的内核(相当于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中的默认值,但您可能已从没有它的旧版本中复制了您的单元文件。要应用该文件,您需要以systemctl daemon-reload && systemctl restart docker为根。

答案 1 :(得分:0)

根据Plesk网站,a solution would be

  1. 停止容器
  2. 重新启动服务器
  3. 删除容器
  4. 或者,如果您正在运行代理规则,则必须先删除它们:

    1. 删除代理规则,停止容器,删除容器 - >错误
    2. 停止容器,删除代理规则,删除容器 - >原理
    3. 如果是a),如果您已经删除了代理规则,则创建另一个容器并向新的容器添加新的代理规则(相同的域/子域)将允许您立即删除旧的代理规则。

      这似乎与容器停止后修改nginx配置文件有关。

答案 2 :(得分:0)

只需尝试删除包含子目录路径太长的目录。

例如

&

它给出如下错误:

  

守护程序的错误响应:驱动程序“ overlay”无法删除根目录   的文件系统   aa867db5afb0b70c5680f3265cf6dd4d02816190e23123d8c97f1e7b502fc928:   统计   /dockerimgs/docker/overlay/429a98b6053371c82902a2ad845b069037f2403b87c5632ad952ec2879/upper/opt/catalog1/catalog2/catalog3/.../.../.../catalogN ... 文件名太长

因此,在停止该容器的情况下,只需转到目录,将该容器用作其文件系统(docker rm -f <container_name> ),然后删除出现在“ /dockerimgs/docker/overlay/429a98b6053371c82902a2ad845b069037f2403b87c5632ad952ec2879/...”上的错误消息中提到的目录