docker容器内无法访问外网问题

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服务,都正常了~

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值