Docker容器无法ping出网络侧

时间:2016-05-31 04:40:01

标签: linux networking docker linux-containers

我正在研究docker容器,现在我正在尝试为docker容器设置网络。

Docker基本上使用具有'docker0'网络的172.17.0.0/16网桥,此网络不是同一主机网络。

我希望docker容器和主机容器使用相同的网络。 所以现在我试图在没有“桥驱动器”的情况下组成docker container的网络。

我使用sharer使用192.168.77.0/24网络。 我希望主机和docker容器能够使用这个网络。

我在这里引用了https://docs.docker.com/v1.7/articles/networking/#how-docker-networks-a-container

以下是我尝试构建容器网络的命令。 所有命令都以root用户身份运行。

# ifconfig eth0 promisc

# docker run -i -t --net=none --name net_test ubuntu_net /bin/bash
# docker inspect -f '{{.State.Pid}}' net_test
# 14673 
# pid=14673 

# mkdir -p /var/run/netns
# ln -s /proc/$pid/ns/net /var/run/netns/$pid 

# brctl addbr my_bridge 
# brctl addif my_bridge eth0 
# ifconfig my_bridge 192.168.77.250 up 
# route del default gw 192.168.77.1 
# route add default gw 192.168.77.1 
# ifconfig eth0 0.0.0.0 up 

# ip link add veth0 type veth peer name veth1 
# brctl addif my_bridge veth0 
# ip link set veth0 up 

# ip link set veth1 netns $pid 
# ip netns exec $pid ip link set dev veth1 name eth0 
# ip netns exec $pid ip link set eth0 address 12:34:56:78:9a:bc 
# ip netns exec $pid ip link set eth0 up 
# ip netns exec $pid ip addr add 192.168.77.251/24 broadcast 192.168.77.255 dev eth0 
# ip netns exec $pid ip route add default via 192.168.77.1 

在这些命令之后,docker容器可以ping到主机,主机可以ping到docker容器,但是容器无法ping到外部网络。

执行命令后,下面是主机中的路由表。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.77.1    0.0.0.0         UG    0      0        0 my_bridge
172.17.0.0      *               255.255.0.0     U     0      0        0 docker0
192.168.77.0    *               255.255.255.0   U     0      0        0 my_bridge

执行

后,下面是docker容器中的路由表
commands.Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.77.1    0.0.0.0         UG    0      0        0 eth0
192.168.77.0    *               255.255.255.0   U     0      0        0 eth0

但是docker容器也无法ping通网关(192.168.77.1)。

我正在使用ubuntu 14.04 LTS桌面版。 我没有设置任何防火墙。

我说错了吗?感谢。

0 个答案:

没有答案