需求
docker 中为容器添加端口映射只能在启动容器时(即 run)添加,而一旦启动完毕后,docker 就不再提供端口映射的功能,那我们可以绕开 docker,自己手动添加吗?答案是可以的!
一番查找后,我了解到 docker 添加端口映射实际上是基于 iptables
实现的,所以只要修改里边的映射规则,就可以作用到 docker 容器上了,步骤如下:
① 获取容器 IP
可以进入到容器,通过 ifconfig
拿到容器的 IP 地址,如下:
当然,如果有为容器固定 IP 地址的,话也可以直接用那个 IP 地址
② 直接绑定
格式如下:
iptables -t nat -A DOCKER -p tcp --dport <主机端口> -j DNAT --to-destination <容器IP地址>:<容器端口>
③ 查看是否映射成功
后期动态映射的接口,在 docker ps [-a]
中是看不