添加、修改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

 

posted @ 2021-01-08 16:31  bug毁灭者  阅读(3034)  评论(0编辑  收藏  举报