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