我最近没有升级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重启docker不修复)才能成功删除并继续.任何人都对可能出错的东西有任何见解?
我使用Docker 17.06以root身份运行Centos 7.3. / var / lib / docker和/ var / lib / docker / overlay中的所有内容都由root拥有:root是保护700. [/ var / lib / docker / network实际上是750]
最佳答案
这是由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以root身份重启docker.