解决音量错误

本主题讨论使用Docker卷或绑定安装时可能发生的错误。

Error: Unable to remove filesystem

一些基于容器的实用程序(例如Google cAdvisor)将Docker系统目录(例如)安装/var/lib/docker/到容器中。例如,用于cadvisor指导您的文档的文档cadvisor如下:

$ sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

当您进行bind-mount时/var/lib/docker/,这有效地将所有其他正在运行的容器的所有资源作为mount的容器中的文件系统装入 /var/lib/docker/。当您尝试删除这些容器中的任何一个时,删除尝试可能会失败,并显示如下错误:

Error: Unable to remove filesystem for
74bef250361c7817bee19349c93139621b272bc8f654ae112dd4eb9652af9515:
remove /var/lib/docker/containers/74bef250361c7817bee19349c93139621b272bc8f654ae112dd4eb9652af9515/shm:
Device or resource busy

如果绑定安装的容器在文件系统内/var/lib/docker/ 使用statfsfstatfs在文件系统上进行处理/var/lib/docker/ ,而不关闭它们,则会发生问题。

通常,我们建议不要/var/lib/docker以这种方式进行绑定安装。但是,cAdvisor需要此绑定安装才能实现核心功能。

如果不确定哪个进程导致错误中提到的路径繁忙并阻止其删除,则可以使用lsof命令查找其进程。例如,对于上面的错误:

$ sudo lsof /var/lib/docker/containers/74bef250361c7817bee19349c93139621b272bc8f654ae112dd4eb9652af9515/shm

要变通解决此问题,请停止绑定安装的容器, /var/lib/docker然后再次尝试删除另一个容器。

cadvisor故障排除绑定安装