Docker 如何自定义默认网桥 docker0

背景

默认情况下启动docker之后会自己创建一个名为 docker0的网桥。但是里面的ip配置可能不是自己期望或是与某些公司内部的网关冲突了,造成不必要的麻烦。

而我遇到的问题刚好就是异地办公司的网关跟默认docker0网关刚好一至,造成移动同事无法访问该服务器地址。

如何解决?

修改默认的配置文件 /etc/docker/daemon.json对Docker进行配置。

如果服务已经开始需要先停止服务,并删除旧的网络。

$ sudo service docker stop
$ sudo ip link set dev docker0 down
$ sudo brctl delbr docker0

修改 /etc/docker/daemon.json以下代码是我的范例

{
  "bip": "192.188.0.1/16",
  "registry-mirrors": [
    "https://a73cc22x.mirror.aliyuncs.com",
    "https://hub-mirror.c.163.com",
    "http://c0d14726.m.daocloud.io",
    "https://registry.aliyuncs.com"
  ]
}

重启Doker服务:

$ sudo service docker start

查看配置是否成功

$ ifconfig docker0
docker0   Link encap:Ethernet  HWaddr 02:42:38:60:08:25
          inet addr:192.188.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

另外一种操作

类似的也需要删除旧的docker0如果已经启动docker服务先关闭了再删除。

手动创建一个新的网桥名称为 bridge0

$ sudo brctl addbr bridge0
$ sudo ip addr add 192.188.0.1/16 dev bridge0
$ sudo ip link set dev bridge0 up

查看确认网桥创建并启动。

$ ip addr show bridge0
4: bridge0:  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.188.0.1/16 scope global bridge0
       valid_lft forever preferred_lft forever

在 Docker 配置文件/etc/docker/daemon.json 中添加如下内容,即可将 Docker 默认桥接到 创建的网桥上。

 { 
     "bridge": "bridge0", 
 }

再次启动docker服务

$ sudo service docker start

Trick

如何查看电脑的路由信息,确定自己到底哪个网关冲突了?

执行以下命令:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.16.3.1      0.0.0.0         UG    0      0        0 enp0s31f6
192.16.3.0      0.0.0.0         255.255.255.0   U     0      0        0 enp0s31f6
192.38.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-8658c245b375
192.128.0.0     0.0.0.0         255.255.0.0     U     0      0        0 br-18e510164f90
192.133.0.0     0.0.0.0         255.255.0.0     U     0      0        0 br-d6fb5b3db5a7
192.188.0.0     0.0.0.0         255.255.0.0     U     0      0        0 docker0

总结

通过以上的操作应该能帮你解决需要的问题。

你可能感兴趣的:(Docker 如何自定义默认网桥 docker0)