Docker(34)- 如何修改 docker 容器的目錄映射


如果你還想從頭學起 Docker,可以看看這個系列的文章哦!

https://www.cnblogs.com/poloyy/category/1870863.html

 

問題背景

 docker run -d -p 9999:8080 -i --name tomcat7 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7
  • 創建容器時,指定了目錄映射(-v)
  • 如果容器運行之后發現目錄映射需要改怎么辦?

 

刪除原有容器,重新創建新的容器

刪除容器

docker rm -f 容器ID/名字

 

重新創建容器

 docker run -d -p 9999:8080 -i --name tomcat7 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7

重新指定需要映射的目錄

 

優點

簡單粗暴,在測試環境用的更多

 

缺點

如果是數據庫、服務器相關的容器,創建新的容器,又得重新配置相關東西了

 

修改容器配置文件(重點)

暫停 Docker 服務

systemctl stop docker

 

進入 Docker 容器配置文件目錄下

cd /var/lib/docker/containers/
ls

 

進入某個容器的配置文件目錄下

容器ID 就是文件夾名稱,可通過 docker ps -aq 來查看,不過這是縮寫,對照起來看就行

cd c614b6db4aed0c8d0c742baa09ff4e2c24761703586460b68633d7b66e62c633
ls

 

修改 config.v2.json

vim config.v2.json

  • 輸入 / ,搜索映射的目錄(webapps)
  • 也可以找到 MountPoints 
  • 若需要重新指定主機上的映射目錄,則改綠圈的兩個地方
  • 若需要重新指定容器上的映射目錄,則改藍圈的兩個地方

 

MountPoints 節點

其實是一個 json 結構的數據,下圖

 

重新啟動 Docker 服務

systemctl stop docker
docker start tomcat7
cd /usr/local/tomcat/webapps
ls

重新映射目錄成功!!

 

注意

 

優點

直接操作配置文件沒有副作用,算簡單

 

缺點

需要暫停 Docker 服務,會影響其他正常運行的 Docker 容器

 

使用 docker commit 命令

停止 Docker 容器

docker stop tomcat7

 

使用 commit 構建新鏡像

docker commit tomcat7 new_tomcat7
docker images

 

使用新鏡像重新創建一個 Docker 容器

 docker run -d -p 9999:8080 -i --name tomcat77 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7

 

修改新容器的名字

如果新容器想用回舊容器的名字,需要先刪了舊容器,再改名

docker rm -f tomcat7
docker rename tomcat77 tomcat7
docker ps

 

優點

  • 無需停止 Docker 服務,不影響其他正在運行的容器
  • 舊容器有的配置和數據,新容器也會有,不會造成數據或配置丟失,對新舊容器都沒有任何影響

 

缺點

需要生成新的鏡像和容器,管理鏡像和容器的時間成本會上升

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM