(原)docker的一个“Driver aufs failed to remove...”问题的解决和分析


## docker的一个“Driver aufs failed to remove...”问题的解决和分析

### 问题描述:

~~~
$ docker ps -a
CONTAINER ID ... STATUS
93feb54dcbb1 ... Dead
$ docker rm -f 93feb54dcbb1
Error response from daemon: Driver aufs failed to remove root filesystem 93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347: rename /var/lib/docker/aufs/mnt/93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347 /var/lib/docker/aufs/mnt/93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347-removing: device or resource busy
Error: failed to remove containers: [93feb54dcbb1]
$ docker ps -a
发现已删除,但是:
$ cd /var/lib/docker/aufs/mnt
$ find . -name "93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347*"
$ ll -h 93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347
文件还在且删不掉:
$ sudo service docker stop
$ sudo service docker stop
$ sudo rm -rf 93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347
rm: cannot remove ‘93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347’: Device or resource busy
~~~

### 解决方法:

$ sudo umount 93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347
$ ll -h 93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347
$ sudo rm -rf 93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347
$ sudo ls -a 93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347
$ ls: cannot access 93feb54dcbb19d31cec38fbb43efeb14318a528a84f98e1f69c91e311dcc9347: No such file or directory
$ sudo service docker start

### 原因分析:

/var/lib/docker/aufs/mnt下的应该是container启动时跟-v参数mount的文件夹相关,也可能跟一个启动了的container所创建的文件系统有关。但是container被rm后理应被删除,删不掉就是出问题了,原因可能是mount的文件被其他container-B或XX-B链接或挂载,...-B非正常退出(或某行为)导致docker以为这个文件还被引用着,所以这文件..估计是没人管了(野指针?)。因此需要手动解决:stop docker后手动删除即可,删除的方法只能是umount再rm。如上。

### 遗留疑问:

1. /var/lib/docker/aufs/mnt下的目录在docker的container全rm后,应该一个文件夹都没有吧。这么多文件夹(居然)全是docker“屡次遗留”的?全删么?(已全删...)

~~~
$ cd /var/lib/docker/aufs/
$ sudo cp -r -p mnt/ mnt_bak
$ sudo rm -r mnt/*
~~~

关于问题1:
已确定:当docker的container全部rm后,/var/lib/docker/aufs/mnt下如果还有文件夹,则这些目录都是“dangling volumes”,理应被清理.
(至于docker搞的什么鬼造成这个鬼并不知道。。留这么一坨。。还各种dead态。。呵呵哒。。以后就手动清楚这个文件夹里的东西吧:(

你可能感兴趣的:((原)docker的一个“Driver aufs failed to remove...”问题的解决和分析)