由于不是很清楚docker安装时会自行mkdir一个名叫docker的文件夹,安装前我也mkdir了一个docker的文件夹。所以安装好后路径中有两个docker,在我这,即

/mnt/ThreeTB/docker/docker

作为轻微强迫症,这个已经很难接受了。于是,停止进程/服务程序,卸载之。

然后准备rm掉整个文件夹,遇到了如下错误:

rm: can't remove './docker/docker/data': Resource busy

Resource busy error

检查是否有进程占用,发现进程已被完全kill,再检索一些资料发现是在建立容器的时候做了相应目录(即/mnt/ThreeTB/docker/docker/data)的挂载,在卸载程序时这个挂载点并没有卸载,所以才导致资源繁忙(Resource busy)无法删除目录,即使rm使用了-rf这样的强力删除的option。

解决办法:

第一步、检查/proc/mounts文件中的docker关键字的情况:

cat /proc/mounts | grep "docker"

说明:

  1. /dev/sdb1是文件系统(file system),也就是docker安装的具体位置(磁盘)
  2. /mnt/ThreeTB/docker/docker/data是挂载点(mount point)
  3. ext4是使用的日志文件系统的格式,第四代扩展文件系统(英语:Fourth extended filesystem,缩写为 ext4)
  4. rw代表可读可写,data=orderd应该是表明数据按一定的规则、顺序排序了(原谅鹅偷懒没花时间去了解)。关于relatime

    针对这种情况,Linux 在内核 2.6.20 中添加了一个新的 mount 选项 relatime(relative atime 的意思)。relatime 的意思是访问文件时,仅在 atime 早于文件的更改时间时对 atime 进行更新。在内核 2.6.24 中,又对 relatime 进行了扩展,在访问文件时,当 atime 已经超过某个时间(例如一天)没有更新,就对 atime 进行更新。这个扩展的意思就是调整 atime 的更新粒度。
    目前 relatime 还没有被广泛的应用,因为许多 Linux 发行版的内核版本和 mount 命令还没有支持这个选项。如果你的系统支持 relatime,可以使用如下命令启用:
    mount -o remount,relatime /
    来自:https://www.ibm.com/developerworks/cn/linux/l-cn-fsgreen/index.html

第二步、卸载之(umount)然后删除之(rm -rf

umount /mnt/ThreeTB/docker/docker/data
rm -rf ./docker/

注意:鹅当时是在/mnt/ThreeTB目录下操作的。

鹅就这样解决了问题。


end.