我最近还没有升级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]
答案 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
或者,如果您正在运行代理规则,则必须先删除它们:
如果是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/...
”上的错误消息中提到的目录