docker容器不能访问外网问题以及ubuntu环境下docker容器如何安装ifconfig ping等网络工具

首先我的宿主机是centos7系统,然后上面跑了一个mysql的docker容器,今天好奇想进去容器里面去看下容器的ip地址,结果发现ifconfig命令没有,想测试能不能连外网,居然ping命令也没有,我试图用apt命令安装这些工具,发现根本连不上网络。

我在宿主机中查看网络配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens192

发现是DNS没有配置的原因,然后改完DNS后重启宿主机网络之后,宿主机是可以访问外网了,但是再用docker exec -it mymysql /bin/bash进去容器,发现还是连不上网,后来上网查了一些资料,终于解决了问题:

注意,大家在使用docker的时候最好把宿主机的防火墙关了service iptables stop,因为创建容器的时候默认会在防火墙里面添加了docker规则

[root@docker2 sysconfig]# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0           
MASQUERADE  tcp  --  172.17.0.2           172.17.0.2           tcp dpt:3306

Chain DOCKER (2 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306 to:172.17.0.2:3306

可以看到默认docker 172.17.0.0/16这个地址段的数据包是不能访问外部网络的

1重启docker服务

[root@docker2 ~]# service docker restart

2启动容器


[root@docker2 ~]# docker start mymysql

上面的mymysql是我的容器名,具体的大家根据自己容器名修改

3进入容器中

[root@docker2 ~]# docker  exec -it mymysql /bin/bash
root@15e658240225:/# 

4使用apt安装ifconfig等网络工具,惊喜发现可以连上外网了

root@15e658240225:/# apt-get update

root@15e658240225:/# apt install net-tools       # ifconfig 

root@15e658240225:/# apt install iputils-ping     # ping

采用上面命令分别安装ifconfig和ping工具

5在容器里面测试工具

root@15e658240225:/# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 7295  bytes 11187896 (10.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4392  bytes 349904 (341.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值