对运行中的Docker容器进行端口映射

问题:如何对运行中的Docker容器进行端口映射?


  • 解决方案如下:
iptables -t nat -A DOCKER -p tcp --dport ${YOURPORT} -j DNAT --to-destination ${CONTAINERIP}:${YOURPORT}

iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source ${CONTAINERIP} --destination ${CONTAINERIP} --dport ${YOURPORT}

iptables -A DOCKER -j ACCEPT -p tcp --destination ${CONTAINERIP} --dport ${YOURPORT}

总共有3条命令,把他们运行在安装了docker的宿主机上。其中就修改两个参数:

  • ${CONTAINERIP} 就是对应容器的ip地址,比如我的容器ip地址是 172.17.0.2 ,(容器的IP可以通过如下方式查看:a.在容器中:ip addr;b.在宿主机中: docker inspect 容器名 |grep IPAddress )所以我就把上述的参数换成我的IP地址。
  • ${YOURPORT} 就是要映射出来的端口,我配置的是一个hadoop平台,其端口是50070
  • 所以最终我的几条命令更改如下:
sudo iptables -t nat -A DOCKER -p tcp --dport 50070 -j DNAT --to-destination 172.17.0.2:50070
sudo iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source 172.17.0.2 --destination 172.17.0.2 --dport 50070
sudo iptables -A DOCKER -j ACCEPT -p tcp --destination 172.17.0.2 --dport 50070

参考:
https://stackoverflow.com/questions/19335444/how-do-i-assign-a-port-mapping-to-an-existing-docker-container
http://yaxin-cn.github.io/Docker/expose-port-of-running-docker-container.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值