Docker(34)- 如何修改 docker 容器的目錄對映
阿新 • • 發佈:2020-11-17
如果你還想從頭學起 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 服務啟動而自啟動,可看:https://www.cnblogs.com/poloyy/p/13985567.html
- 如果想修改 Docker 的對映埠,可看:https://www.cnblogs.com/poloyy/p/13940554.html
- 改hostconfig.json 並不會成功哦
優點
直接操作配置檔案沒有副作用,算簡單
缺點
需要暫停 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 服務,不影響其他正在執行的容器
- 舊容器有的配置和資料,新容器也會有,不會造成資料或配置丟失,對新舊容器都沒有任何影響
缺點
需要生成新的映象和容器,管理映象和容器的時間成本會上升