我试图在Docker中建立一个桥接到主机上外部接口的网桥。
我在CentOS 7上运行Docker 10.11
这篇博客很好地解释了......
这是命令I docker
我根据这里的命令创建了桥:
sudo docker network create \
--driver bridge \
--subnet=192.168.33.0/24 \
--gateway=192.168.33.10 \
--opt "com.docker.network.bridge.name"="docker1" \
shared_nw
然后我将其添加到外部接口
sudo brctl addif docker1 eth1
我创建了一个容器并在网络上为其分配了一个IP。
我可以在没有主机本身问题的情况下对其进行ping操作,但创建docker bridge并不能将ip分配给网桥或分配给容器的ip可从网络上的另一台机器访问,同样也可以访问网络本身是不可访问的。
我似乎错过了一些东西。我认为桥接器允许容器使用与主机相同的子网。
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master docker1 state UP qlen 1000
link/ether 00:50:56:aa:41:10 brd ff:ff:ff:ff:ff:ff
inet6 fe80::250:56ff:feaa:4110/64 scope link
valid_lft forever preferred_lft forever
3: docker1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:d9:cc:37:ff brd ff:ff:ff:ff:ff:ff
inet 192.168.33.10/24 scope global docker1
valid_lft forever preferred_lft forever
inet6 fe80::42:d9ff:fecc:37ff/64 scope link
valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
link/ether 02:42:5c:8a:0f:57 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.02425c8a0f57 no
docker1 8000.0242d9cc37ff no eth1
答案 0 :(得分:0)
好的......我想我发现了我做错了什么。显然,在docker使用docker network create命令创建桥接器之后,您必须将桥接器添加到启动脚本中以用于任何发行版,因此它可以用于管理网络的任何内容。在Ubuntu上,这需要将桥连接到/ etc / network / interfaces文件,对于CentOS,这需要在/ etc / sysconfig / network-scripts文件夹中添加配置文件。
重新启动网络服务(或重新启动)后,一切似乎都正常。