问题背景
docker run -d --name tomcat7 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7
- 使用上述命令创建了个容器,并将容器的目录映射到主机的目录
- docker exec 进入容器的 CLI 模式
- 查看容器内服务是否启动,发现是启动的
- 查看 tomcat 目录下的文件夹
- 想删除 webapps 文件夹,但是报了下面的错误
rm: cannot remove 'webapps': Device or resource busy
问题排查
- 无论服务是否启动都会有这个问题
- 当 docker run 没有指定 -v 参数,即没有映射目录时没有这个问题
- 如果要删除非映射目录 /usr/local/tomcat/webapps 的其他目录是没有这个问题
- 最终答案:因为目录映射了,所以这个目录不能删除
解决问题
- 经过我多次尝试,若想操作映射的目录,只能进入该文件夹,再去操作所有文件,比如手动删除、移动所有文件
- 或者先修改容器映射目录,然后操作完原来映射的目录之后,再去重新修改容器映射目录
- 怎么在不用删除容器又创建容器时指定映射目录呢,可看此文章: