docker动态绑定端口

一、背景

在创建容器的时候,我们可以使用命令 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 来查看。

posted @ 2018-04-11 20:09  ColdCode  阅读(3018)  评论(0编辑  收藏  举报
AmazingCounters.com