Docker错误 - 无法删除容器

Joe*_*oeG 6 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
Run Code Online (Sandbox Code Playgroud)

我基本上必须重新启动(systemctl restart docker不修复)才能成功删除并继续.任何人都对可能出错的东西有任何见解?

root和Docker 17.06 一样在Centos 7.3上运行.一切都在/var/lib/docker/var/lib/docker/overlay它的拥有者root:root是保护700 /var/lib/docker/network实际上是750]

BMi*_*tch 2

这是docker 正在解决的一个已知问题。我建议升级到更新的内核(7.4 centos 等效版本是一个很大的改进)并迁移到 overlay2。一旦 18.03 版本发布,我建议升级,因为 docker 端的一些修复将包含在那里。

当删除容器导致此问题时,您可以尝试强制选项 ( docker rm -f),该选项通常仍会报告错误,但最终会在几秒钟后删除容器。您可能会遇到一些残留的部分,最好通过重新启动来清理它们,但它可能有助于解决文件系统锁定问题导致的任何其他问题。

我看到在 RH 和 CentOS 系统上改进 docker 的另一件事是使用以下内容创建一个文件:

$ cat /etc/systemd/system/docker.service.d/override.conf
[Service]
MountFlags=slave
Run Code Online (Sandbox Code Playgroud)

现在这应该是 docker 当前版本中的默认设置,但您可能已经从没有它的旧版本复制了单元文件。要应用该文件,您需要systemctl daemon-reload && systemctl restart docker以 root 身份。