1、之前制作了docker的镜像,并成功启动了
docker run -p 8080:8030 -tid --name tomcat --privileged=true lalala /usr/sbin/init
2、通过外网访问IP:8080访问成功,其中IP为宿主机外网IP地址
curl http://xxx.xxx.xxx.xxx:8080
3、访问web服务,可以正常使用,结果发现web服务中需要调用外网地址内容无法访问
4、进入容器查看,竟然无法访问外网,curl: (6) Could not resolve host: www.baidu.com;
docker exec -it tomcat /bin/bash
curl www.baidu.com
5、宿主机访问外网和容器网络都正常
6、怀疑是宿主机防火墙转发问题,退出容器,查看宿主机防火墙NAT转发情况
exit
firewall-cmd --query-masquerade
结果是 no
7、sysctl -p 查看配置,发现没有配置转发,加入后再次查看,发现加入成功了
sysctl -p
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
8、开启转发
firewall-cmd --add-masquerade --permanent
9、重新加载运行的配置
firewall-cmd --reload
10、查看转发情况,结果是yes了
firewall-cmd --query-masquerade
11、重启docker和容器
systemctl restart docker
docker start tomcat
docker exec -it tomcat /bin/bash
12、进入容器查看情况,访问外网成功了~
docker exec -it tomcat /bin/bash
curl www.baidu.com
13、访问web服务,都正常了~