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: <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.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

总结

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 13,602评论 0 120
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 5,854评论 0 7
  • docker之容器通信 这节属于了解学习,算是烂尾,最后我也没找到合适的方式去固定容器ip,然后作为正式环境去跑,...
    道无虚阅读 10,860评论 1 7
  • 一 、什么是 Docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国...
    Blazzer阅读 8,356评论 0 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,264评论 19 139

友情链接更多精彩内容