Docker(33)- 如何修改 docker 容器的端口映射


如果你還想從頭學起 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 端口映射

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

 


免責聲明!

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



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