Docker Daemon启动的时候默认使用docker0作为网络适配器,我们可以在启动docker daemon时,使用-b BRIDEG或者--bridge=BRIDGE来指定网络适配器。
操作如下:
# Stopping Docker and removing docker0
$ sudo service docker stop
$ sudo ip link set dev docker0 down
$ sudo brctl delbr docker0
$ sudo iptables -t nat -F POSTROUTING
# Create our own bridge
$ sudo brctl addbr bridge0
#给网络适配器bridge0分配网段
$ sudo ip addr add 192.168.5.1/24 dev bridge0
$ sudo ip link set dev bridge0 up
# Confirming that our bridge is up and running
$ ip addr show bridge0
4: bridge0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state UP group default
link/ether 66:38:d0:0d:76:18 brd ff:ff:ff:ff:ff:ff
inet 192.168.5.1/24 scope global bridge0
valid_lft forever preferred_lft forever
# Tell Docker about it and restart (on Ubuntu)
#这条一看就是错的,我目前用docekr-engine 1.12,已经放弃了/etc/default/docker这个老版配置文件;
#应该修改/usr/lib/systemd/system/docker.service文件,在ExecStart的启动参数中加上“--bridge=bridge0”或者“-b bridge0”
$ echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
$ sudo service docker start
# Confirming new outgoing NAT masquerade is set up
$ sudo iptables -t nat -L -n
...
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.5.0/24 0.0.0.0/0