docker 笔记--运行中的容器如何添加端口映射
解决:
iptables -t nat -A DOCKER -p tcp --dport ${YOURPORT_1} -j DNAT --to-destination ${CONTAINERIP}:${YOURPORT_2}
iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source ${CONTAINERIP} --destination ${CONTAINERIP} --dport ${YOURPORT_2}
iptables -A DOCKER -j ACCEPT -p tcp --destination ${CONTAINERIP} --dport ${YOURPORT_2}
在安装docker的宿主机执行上述三条命令
解释:
${YOURPORT_1} ----你要映射到宿主机的端口
${YOURPORT_2} ----你要映射的端口,也就是容器里面的端口
${CONTAINERIP} ----容器ip,通过docker inspect `container_name or container_id` | grep IPAddress 可以查看
例如:我docker安装的hadoop集群
iptables -t nat -A DOCKER -p tcp --dport 50070 -j DNAT --to-destination 172.20.2.1:50070
iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source 172.20.2.1 --destination 172.20.2.1 --dport 50070
iptables -A DOCKER -j ACCEPT -p tcp --destination 172.20.2.1 --dport 50070
如果想删除,把-A换成-D就可以