在不重新创建容器的情况下如何修改容器端口映射

  我们知道容器一旦create出来之后,如果想更改或者增加端口映射会非常麻烦,docker本身并没有提供命令用来更新容器的端口映射,如果我想加一个端口映射,该怎么做呢?

思路

      docker容器启动会读取hostconfig.json和config.v2.json这两个配置文件,根据配置程序会修改iptables,启动容器。我们可以手动修改这两个文件,把端口映射加进去。

步骤

①停止容器:docker stop $(containerID)

②进入docker容器目录,修改hostconfig.json文件(路径一般为/var/lib/containers/$(hash_of_the_container)/hostconfig.json),在PortBindings这一节增加你需要增加的映射端口,示例如下(橙色为新增示例):

“PortBindings”:{“443/tcp”:[{“HostIp”:””,”HostPort”:”443″}],“80/tcp”:[{“HostIp”:””,”HostPort”:”83″}],”8080/tcp”:[{“HostIp”:””,”HostPort”:”9018″}]}

③进入docker容器目录,修改config.v2.json文件(路径一般为/var/lib/containers/$(hash_of_the_container)/config.v2.json),在ExposedPorts和Ports这一节增加你需要增加的映射端口,示例如下(橙色为新增示例):

“ExposedPorts”:{“443/tcp”:{},“80/tcp”:{},”8080/tcp”:{}}

“Ports”:{“443/tcp”:[{“HostIp”:”0.0.0.0″,”HostPort”:”443″}],“80/tcp”:[{“HostIp”:”0.0.0.0″,”HostPort”:”83″}],”8080/tcp”:[{“HostIp”:”0.0.0.0″,”HostPort”:”9018″}]}

④启动容器:docker start $(containerID)

posted @ 2024-02-22 11:10  陶清刚  阅读(88)  评论(0)    收藏  举报