2023-02-13 11:14:15
13 02 2023
摘要:当我们docker初始化容器的时候没有映射端口出宿主服务器,我们可以使用iptables来实现端口转发来映射

下面介绍怎么使用iptables映射docker容器里面的端口到宿主机器;

1、当我们初始化docker容器没有映射端口到宿主服务器的时候,我们常做的方法是:

(1)、删除容器重新初始化容器和映射端口

(2)、可以使用iptables来映射端口

2、执行下面命令显示没有映射nginx端口到主机的容器:docker ps

  19666ec5e857 nginx "/docker-entrypoint.…" 53 minutes ago Up 53 minutes 80/tcp goofy_lederberg          

root@host38:/home/hgh# docker inspect 19666ec5e857 | grep -i Add
"CapAdd": null,
"GroupAdd": null,
"LinkLocalIPv6Address": "",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"GlobalIPv6Address": "",
"IPAddress": "172.17.0.2",
"MacAddress": "02:42:ac:11:00:02",
"IPAddress": "172.17.0.2",
"GlobalIPv6Address": "",
"MacAddress": "02:42:ac:11:00:02",

上面红色字体的ip就是容器的ip地址。

我们可以使用下面命令端口映射:

iptables -t nat -A PREROUTING -p tcp -d 172.17.159.38 --dport 81 -j DNAT --to 172.17.0.2:80

//如果服务器没有固定ip可以执行这句话,MASQUERADE是伪造

iptables -t nat -A POSTROUTING -p tcp -d 172.17.0.2 --dport 80-j MASQUERADE

//执行MASQUERADE后,就不用执行这句了

iptables -t nat -A POSTROUTING -p tcp -d 172.17.0.2 --dport 80 -j SNAT --to 172.17.159.38

 

 

 

 

延伸阅读
  1. 上一篇:JDK
  2. 下一篇:Nginx
发表评论