Troubleshoot volume errors
This topic discusses errors which may occur when you use Docker volumes or bind mounts.
Error: Unable to remove filesystem
Some container-based utilities, such as Google cAdvisor, mount Docker system directories, such as
/var/lib/docker/
, into a container. For instance, the documentation for cadvisor
instructs you to run the cadvisor
container as follows:$ 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
When you bind-mount
/var/lib/docker/
, this effectively mounts all resources of all other running containers as filesystems within the container which mounts /var/lib/docker/
. When you attempt to remove any of these containers, the removal attempt may fail with an error like the following:Error: Unable to remove filesystem for
74bef250361c7817bee19349c93139621b272bc8f654ae112dd4eb9652af9515:
remove /var/lib/docker/containers/74bef250361c7817bee19349c93139621b272bc8f654ae112dd4eb9652af9515/shm:
Device or resource busy
The problem occurs if the container which bind-mounts
/var/lib/docker/
uses statfs
or fstatfs
on filesystem handles within /var/lib/docker/
and does not close them.
Typically, we would advise against bind-mounting
/var/lib/docker
in this way. However, cAdvisor
requires this bind-mount for core functionality.
If you are unsure which process is causing the path mentioned in the error to be busy and preventing it from being removed, you can use the
lsof
command to find its process. For instance, for the error above:$ sudo lsof /var/lib/docker/containers/74bef250361c7817bee19349c93139621b272bc8f654ae112dd4eb9652af9515/shm
No comments:
Post a Comment