添加、修改docker容器端口映射的方法


大家都知道docker run可以指定端口映射,但是容器一旦生成,就沒有一個命令可以直接修改。通常間接的辦法是,保存鏡像,再創建一個新的容器,在創建時指定新的端口映射。

有沒有辦法不保存鏡像而直接修改已有的這個容器呢?有。在stackoverflow上面找到答案了,原帖鏈接

 

方法一

1、獲得容器IP
container_name 換成實際環境中的容器名

docker inspect `container_name` | grep IPAddress

2、iptable轉發端口

將宿主機的60000端口映射到容器的8080端口

iptables -t nat -A DOCKER -p tcp --dport 60000 -j DNAT --to-destination 172.17.0.2:8080

 

方法二

 

先停止容器、停止docker

docker stop phpdev

systemctl stop docker

 

1、使用 docker ps -a 命令找到要修改容器的 CONTAINER ID

2、運行 docker inspect 【CONTAINER ID】 | grep Id 命令

3、執行 cd /var/lib/docker/containers 命令進入找到與 Id 相同的目錄,如下圖

4、停止 docker 引擎服務,systemctl stop docker 或者 service docker stop

5、進入對應 Id 所在目錄后,如上圖所示,修改 hostconfig.json 和 config.v2.json ---- vi hostconfig.json

   可以看到格式很亂,可以使用json美化工具查看具體信息。

 

然后可以按照方框中所示,再添加一段類似的內容,比如新增一個 80 端口,在 PortBindings下邊添加一下內容,端口配置之間用英文字符逗號隔開

"80/tcp": [
{
"HostIp": "",
"HostPort": "83"
} 
]

 效果如下

 

 

接着修改 vi config.v2.json

找到 ExposedPorts 和 Ports 對應項,還是仿照原先的內容添加自己所需要的端口映射 

 

========================================================================

========================================================================

 

 效果如下:

 

 

保存之后

systemctl start docker ,

docker start phpdev

啟動容器之后就可以看到新增的端口映射了。

docker ps

 

 

參考:

https://blog.csdn.net/m0_37886429/article/details/82757116

https://blog.csdn.net/u011241780/article/details/79457876?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control

 


免責聲明!

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



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