Docker - 解决在容器内删除和主机映射的目录而报错 rm: cannot remove 'webapps': Device or resource busy 的问题

问题背景

docker run -d --name tomcat7 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7 
  1. 使用上述命令创建了个容器,并将容器的目录映射到主机的目录
  2. docker exec 进入容器的 CLI 模式
  3. 查看容器内服务是否启动,发现是启动的
  4. 查看 tomcat 目录下的文件夹
  5. 想删除 webapps 文件夹,但是报了下面的错误

Docker - 解决在容器内删除和主机映射的目录而报错  rm: cannot remove 'webapps': Device or resource busy 的问题

rm: cannot remove 'webapps': Device or resource busy

 

问题排查

  • 无论服务是否启动都会有这个问题
  • 当 docker run 没有指定 -v 参数,即没有映射目录时没有这个问题
  • 如果要删除非映射目录 /usr/local/tomcat/webapps 的其他目录是没有这个问题
  • 最终答案:因为目录映射了,所以这个目录不能删除

 

解决问题

  1. 经过我多次尝试,若想操作映射的目录,只能进入该文件夹,再去操作所有文件,比如手动删除、移动所有文件
  2. 或者先修改容器映射目录,然后操作完原来映射的目录之后,再去重新修改容器映射目录
  3. 怎么在不用删除容器又创建容器时指定映射目录呢,可看此文章:
上一篇:RocketMQ 一行代码造成大量消息丢失


下一篇:StackExchange.Redis Timeout performing 超时问题