对运行中的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 --...
·
问题:如何对运行中的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
更多推荐
已为社区贡献2条内容
所有评论(0)