天天看點

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. 或者看下這篇文章:

繼續閱讀