解决音量错误
本主题讨论使用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/
使用statfs
或fstatfs
在文件系统上进行处理/var/lib/docker/
,而不关闭它们,则会发生问题。
通常,我们建议不要/var/lib/docker
以这种方式进行绑定安装。但是,cAdvisor
需要此绑定安装才能实现核心功能。
如果不确定哪个进程导致错误中提到的路径繁忙并阻止其删除,则可以使用lsof
命令查找其进程。例如,对于上面的错误:
$ sudo lsof /var/lib/docker/containers/74bef250361c7817bee19349c93139621b272bc8f654ae112dd4eb9652af9515/shm
要变通解决此问题,请停止绑定安装的容器,
/var/lib/docker
然后再次尝试删除另一个容器。