[转帖]docker报错:报错br-xxxx 之Docker-Compose 自动创建的网桥与局域网络冲突

docker,报错,br,xxxx,compose,自动,创建,网桥,局域网络,冲突 · 浏览次数 : 0

小编点评

**内容生成时需要带简单的排版** **1. 排版代码** * 使用`tab`键对排版代码。 * 使用``和``键对排版代码。 * 使用` `和` ``键对排版代码。 **2. 排版示例** **示例代码:** ```python print("Hello world!") print("Hello world!") print("Hello world!") ``` **示例排版:** ``` Hello world! Hello world! Hello world! ``` **3. 排版注意事项** * 排版代码时要注意代码的格式和排版。 * 使用`tab`键对排版代码时要注意代码的格式。 * 使用``和``键对排版代码时要注意代码的格式。 * 使用` `和` ``键对排版代码时要注意代码的格式。 **4. 排版工具** * 使用``和``键对排版代码。 * 使用` `和` ``键对排版代码。 * 使用` `和` ``键对排版代码。 * 使用` `和` ``键对排版代码。

正文

https://www.dianjilingqu.com/653590.html

 

故障描述:

当我使用docker-compose的方式部署内网的harbor时。它自动创建了一个bridge网桥,与内网的一个网段(172.18.0.1/16)发生冲突,docker 默认的网络模式是bridge ,默认网段是172.17.0.1/16。

多次执行docker-compose up -d 部署服务后,自动生成的网桥会依次使用: 172.18.x.x ,172.19.x.x....

然后碰巧内网的一个网段也是172.18.x.x。这样就导致这台机器死活也连不到172.18.x.x这台机器。

现象:

telnet不通,也无法ping通。。

 

 

解决方法

1、查看路由表:

 

 

2、查看docker network如下:

 

 3、将docker-compose应用停止

docker-compose down

4、修改docker.json文件

下次docker启动的时候docker0将会变为172.31.0.1/24,docker-compose自动创建的bridge也会变为172.31.x.x/24

# cat /etc/docker/daemon.json
{
  "debug" : true,
  "default-address-pools" : [
    {
      "base" : "172.31.0.0/16",
      "size" : 24
    }
  ]
}

5、删除原来有冲突的bridge

# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
e4c5724969c9        bridge              bridge              local
b3cd674d3894        harbor_harbor       bridge              local
7f20b3d56275        host                host                local
7b5f3000115b        none                null                local

# docker network rm b3cd674d3894
b3cd674d3894

6、重启docker服务

# systemctl restart docker

7、查看ip a和路由表

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:a3:f4:69 brd ff:ff:ff:ff:ff:ff
    inet 10.18.61.80/24 brd 10.18.61.255 scope global eth0
       valid_lft forever preferred_lft forever
64: br-6a82e7536981: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:4f:5a:cc:53 brd ff:ff:ff:ff:ff:ff
    inet 172.31.1.1/24 brd 172.31.1.255 scope global br-6a82e7536981
       valid_lft forever preferred_lft forever
65: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:91:20:87:bd brd ff:ff:ff:ff:ff:ff
    inet 172.31.0.1/24 brd 172.31.0.255 scope global docker0
       valid_lft forever preferred_lft forever

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.18.61.1      0.0.0.0         UG    0      0        0 eth0
10.18.61.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
172.31.0.0      0.0.0.0         255.255.255.0   U     0      0        0 docker0
172.31.1.0      0.0.0.0         255.255.255.0   U     0      0        0 br-6a82e7536981

# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
27b40217b79c        bridge              bridge              local
6a82e7536981        harbor_harbor       bridge              local
7f20b3d56275        host                host                local
7b5f3000115b        none                null                local

可以看到64: br-6a82e7536981 和 65: docker0的网段都已经变成172.31.x.x了。说明配置ok了

8、启动docker-compose

# docker-compose up -d

如果出现以下错误

Starting log         ... error
Starting registry    ... error
Starting registryctl ... error
Starting postgresql  ... error
Starting portal      ... error
Starting redis       ... error
Starting core        ... error
Starting jobservice  ... error
Starting proxy       ... error

ERROR: for log  Cannot start service log: network b3cd674d38943c91c439ea8eafc0ecc4cea6d4e0df875d930e8342f6d678d135 not found
ERROR: No containers to start

因为没有自动切换。NETWORK ID:b3cd674d3....还是原来的NETWORK ID

需要绑定bridge

# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
27b40217b79c        bridge              bridge              local
6a82e7536981        harbor_harbor       bridge              local
7f20b3d56275        host                host                local
7b5f3000115b        none                null                local
# docker network connect network_name container_name
[root@mvxl74019 harbor]# docker network connect harbor_harbor nginx
[root@mvxl74019 harbor]# docker network connect harbor_harbor harbor-jobservice
[root@mvxl74019 harbor]# docker network connect harbor_harbor harbor-core
[root@mvxl74019 harbor]# docker network connect harbor_harbor registryctl
[root@mvxl74019 harbor]# docker network connect harbor_harbor registry
[root@mvxl74019 harbor]# docker network connect harbor_harbor redis
[root@mvxl74019 harbor]# docker network connect harbor_harbor harbor-db
[root@mvxl74019 harbor]# docker network connect harbor_harbor harbor-portal
[root@mvxl74019 harbor]# docker network connect harbor_harbor harbor-log
[root@mvxl74019 harbor]# docker-compose up -d
Starting log         ... done
Starting registry    ... done
Starting registryctl ... done
Starting postgresql  ... done
Starting portal      ... done
Starting redis       ... done
Starting core        ... done
Starting jobservice  ... done
Starting proxy       ... done
9、检查服务是否正常
# docker-compose ps
      Name                     Command                  State                 Ports
---------------------------------------------------------------------------------------------
harbor-core         /harbor/entrypoint.sh            Up (healthy)
harbor-db           /docker-entrypoint.sh            Up (healthy)
harbor-jobservice   /harbor/entrypoint.sh            Up (healthy)
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp
harbor-portal       nginx -g daemon off;             Up (healthy)
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:80->8080/tcp
redis               redis-server /etc/redis.conf     Up (healthy)
registry            /home/harbor/entrypoint.sh       Up (healthy)
registryctl         /home/harbor/start.sh            Up (healthy)

10、再尝试是否能telnet通目标IP: 172.18.5.145

可以看到是已经能够telnet通和ping通了。

与[转帖]docker报错:报错br-xxxx 之Docker-Compose 自动创建的网桥与局域网络冲突相似的内容:

[转帖]docker报错:报错br-xxxx 之Docker-Compose 自动创建的网桥与局域网络冲突

https://www.dianjilingqu.com/653590.html 故障描述: 当我使用docker-compose的方式部署内网的harbor时。它自动创建了一个bridge网桥,与内网的一个网段(172.18.0.1/16)发生冲突,docker 默认的网络模式是bridge ,默

[转帖][Docker] Windows里运行docker执行sh文件报错 $'\r': command not found

https://www.cnblogs.com/MasterMonkInTemple/p/16358366.html 出现这样的错误,是因为Shell脚本在Windows系统编写时,每行结尾是\r\n,而在Linux系统中行每行结尾是\n,所以在Linux系统中运行脚本时,会认为\r是一个字符,导致

[转帖]docker容器跨主机网络overlay

https://www.cnblogs.com/machangwei-8/p/15757120.html 目录 拉取镜像,运行容器 浏览器上访问Consul 修改host1,host2的docker daemon配置文件 创建网络 验证 在overlay中运行容器 运行 查看一下这两个网卡 查看生成

[转帖]Docker容器跨主机通信overlay网络的解决方案

https://www.jb51.net/article/237838.htm 一、Docker主机间容器通信的解决方案 Docker网络驱动 Overlay: 基于VXLAN封装实现Docker原生Overlay网络 Macvlan: Docker主机网卡接口逻辑上分为多个子接口,每个子接口标识一

[转帖]docker多主机网络方案

http://t.zoukankan.com/bethal-p-6046816.html 本文探讨Docker多主机网络的性能。 在过去的博文里,我测试过 Docker的网络 。 MySQL服务器团队 提供了他们自己的结果,和我的观察是一致的。 本文里一系列的测试,想更多关注使用多主机的Docker

[转帖]docker进阶教程之dockerfile优化镜像大小

https://www.jb51.net/hack/ 同样功能的镜像,但是不同的Dockerfile build出来的镜像大小是不一样的,下面这篇文章主要给大家介绍了关于docker进阶教程之dockerfile优化镜像大小的相关资料,需要的朋友可以参考下 + 目录 一、无优化构建镜像 1 2 3

[转帖]Docker镜像最佳实践

https://www.zhihu.com/people/trumandu-95/posts 5条最佳建议 1.仅安装产线需要依赖与软件 镜像尽可能最小原则 仅复制jar/war 使用自定义JRE(Java Runtime Environment) 2.使用多阶段构建 FROM maven:3.6.

[转帖]docker 容器基础技术:linux cgroup 简介

https://cizixs.com/2017/08/25/linux-cgroup/ Linux cgroups 的全称是 Linux Control Groups,它是 Linux 内核的特性,主要作用是限制、记录和隔离进程组(process groups)使用的物理资源(cpu、memory、

[转帖]Docker容器动态添加端口

方法1 修改iptables端口映射 docker的端口映射并不是在docker技术中实现的,而是通过宿主机的iptables来实现。通过控制网桥来做端口映射,类似路由器中设置路由端口映射。 比如我们有一个容器的80端口映射到主机的8080端口,先查看iptables到底设置了什么规则:登录后复制

[转帖]Docker方式安装ZabbixServer/Agent及Grafana

https://www.jianshu.com/p/055a3cf63233 安装环境 [root@master0 ~]# docker version Client: Version: 17.12.0-ce API version: 1.35 Go version: go1.9.2 Git com