一、背景 在创建容器的时候,我们可以使用命令 docker container run -p host:container container-name 的方式来绑定端口,还可以使用docker-compose.yml文件来绑定端口。有时会有一个需求:在已经创建的容器上添加容器端口与主机端口的绑定,这时可以使用iptables命令来动态绑定端口,而不用重新创建容器。 二、使用iptables动态绑定端口 1、查看容器ip docker inspect <container-name | id> | grep IPAddress 这一步后会输出容器的ip地址,端口绑定时会使用。 2、端口绑定 sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport hostport -j DNAT --to-destination containerip:port 举个例子,使用命令 sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport 9030 -j DNAT --to-destination 172.22.0.2:9090 将容器的9090端口和宿主机的9030端口绑定了起来,其中172.22.0.2是容器的ip地址。 3、保存规则 sudo iptables-save 4、查看动态绑定的端口 docker port <container-name | id> 不能查看使用iptables绑定的端口,要使用命令 iptables -t nat -nvL | grep container-ip 来查看。 |
|