Docker(33)- 如何修改 docker 容器的埠對映

小菠蘿測試筆記發表於2020-11-17

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

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

 

問題背景

docker run -d -p 9999:8080 -i --name tomcat7 tomcat:7
  • 建立容器時,指定了埠對映(-p)
  • 如果容器執行之後發現埠需要改怎麼辦?

 

當前是訪問 9999 埠

 

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

刪除容器

docker rm -f 容器ID/名字

 

重新建立容器

docker run -d -p 8888:8080 -i --name tomcat7 tomcat:7

重新指定需要對映的埠

 

優點

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

 

缺點

如果是資料庫、伺服器相關的容器,建立新的容器,又得重新配置相關東西了

 

修改容器配置檔案

暫停 Docker 服務

systemctl stop docker

 

進入 Docker 容器配置檔案目錄下

cd /var/lib/docker/containers/
ls

 

進入某個容器的配置檔案目錄下

容器ID 就是資料夾名稱,可通過 docker ps -aq 來檢視,不過這是縮寫,對照起來看就行

cd c614b6db4aed0c8d0c742baa09ff4e2c24761703586460b68633d7b66e62c633
ls

 

修改 hostconfig.json

vim hostconfig.json

 

  • 輸入 / ,搜尋對映的埠(9999)
  • 修改埠值就行了
  • 修改完後 :wq 退出並儲存此檔案

 

重新啟動 Docker 服務

systemctl stop docker
docker start tomcat7
docker ps

訪問 8888 埠沒問題!

 

注意

 

優點

直接操作配置檔案沒有副作用,算簡單

 

缺點

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

 

使用 docker commit 命令

停止 Docker 容器

docker stop tomcat7

 

使用 commit 構建新映象

docker commit tomcat7 new_tomcat7
docker images

 

使用新映象重新建立一個 Docker 容器

docker run -d -p 8888:8080 -i --name tomcat77 new_tomcat7
docker ps 

 

修改新容器的名字

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

docker rm -f tomcat7
docker rename tomcat77 tomcat7
docker ps

 

優點

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

 

缺點

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

 

修改主機 iptables 埠對映

網上很多文章都有這個方法,但是我實操了一遍是不行的,不知道是不是步驟錯了,哪位大佬知道可否說一聲捏

 

相關文章