docker-compose无法与网络建立网络冲突,网络有重叠的IPv4

时间:2018-03-01 22:48:47

标签: docker nginx networking

我有一些我需要在本地停靠和运行的开发站点。我需要给他们固定的IP,因为他们使用需要始终命中相同IP的服务的回调。

在我的第一个码头工作堆上,它完美运行

php-fpm:
  image: php:fpm
  container_name: site1-php-fpm
  working_dir: /application
  networks:
    site1:
      ipv4_address: 172.18.0.5
.......
.......
.......

networks:
  site1:
    driver: bridge
    ipam:
      config:
      - subnet: 172.18.0.0/16

我可以通过yaml文件中指定的172.18.0.1/2/3/4/5访问服务。尝试创建下一个网站时出现问题:

php-fpm:
  image: php:fpm
  container_name: site1-php-fpm
  working_dir: /application
  networks:
    site2:
      ipv4_address: 172.18.1.5
.......
.......
.......

networks:
  site2:
    driver: bridge
    ipam:
      config:
      - subnet: 172.18.1.0/16

我的计划是使用172.18.1.0,172.18.2.0,172.18.3.0 .....等等但我收到此错误:

cannot create network bc0ef736dbefd4622b5ca304e35fe8be3d071fc86ad45b41a161ea300c9ef929 (br-bc0ef736dbef): conflicts with network 2a52c21c5e042d56c47c032d78141c3413766ec6fb248e3a69ee9f794f38b70a (br-2a52c21c5e04): networks have overlapping IPv4

我认为172.18.0.0和172.18.0.1在哪里有不同的子网?或者我错了吗?

2 个答案:

答案 0 :(得分:2)

子网掩码/16表示网络前缀是地址的前16位,或者换句话说前两个数字 - 172.18.。在这种情况下,他们真的重叠。您必须将子网掩码更改为/24或使用不同的网络前缀,即172.18.172.19.172.20.等。

答案 1 :(得分:2)

我有一个类似的错误:

  

使用驱动程序“ bridge”创建网络“ elk_network1”   错误:无法创建网络c64ac781783d8f020494700bedd0f4eed5751e1138f825ef91402134f395dd17(br-c64ac781783d):与网络2d48f2e1eb3d16e16e958e52f4a2b48f5424e62eb961ebecce4e4d4f4d4f4d4f4d4f4e4d4f4e2d4f4e4d4f4e2d4f4e4d4f2e4e4e4e4e4e4e4e4d4f4e2d4f4e4d4f4e2d4f4e4d4f4d2f4d4f4e2d4f4e4d4f4e2d4f4e4d4f4e4d4f4e2d4f4e4d4f2d4f4e4d4f4e2d4f4e4d4f4d2f4e4e4e4e4e4e4e4b2b2b4b0b0b0b0b4c

我已经按照以下步骤解决了这个问题:

列出所有网络

$ ip a

如果您看到br-2d48f2e1eb3d之类的网桥并且其状态为关闭,则将其删除

$ brctl delbr br-2d48f2e1eb3d

然后重新启动docker

$ service docker restart

再次运行docker-compose。这样docker-compose会运行良好。

但是根据您的情况,您首先需要将网络掩码更改为/24