Docker Compose returns error “networks have overlapping IPv4”

starting by saying I am totally new to Docker and I am not yet familiarized with the Docker ecosystem.

What I try to perform is to create a docker-composer.yml to be used in my local dev environment across my projects.

I already use the wp-local-docker for my WordPress projects, but I also have old projects that come with different requirements and for that reason, I did my own docker-compose.yml. The code of my own docker-compose.yml is the following:

version: "3.4"
services:
   database:
      image: mysql:latest
      ports:
         - "3306:3306"
      environment:
         MYSQL_ROOT_PASSWORD: password
         MYSQL_DATABASE: appdb
         MYSQL_USER: appuser
         MYSQL_PASSWORD: password
      volumes:
         - $PWD/data/db:/var/lib/mysql
      networks:
          app_net:
              ipv4_address: 192.168.50.10
   phpmyadmin:
      image: phpmyadmin/phpmyadmin:latest
      links:
         - database:mysql
      ports:
         - "8181:80"
      environment:
         MYSQL_ROOT_PASSWORD: password
         MYSQL_USER: appuser
         MYSQL_PASSWORD: password
         PMA_HOST: mysql
         PMA_PORT: 3306
         PMA_USER: appuser
         PMA_PASSWORD: password
      networks:
         app_net:
            ipv4_address: 192.168.50.11
   web:
      build: $PWD/ApachePHP
      depends_on:
         - database
      links:
         - database:mysql
         - mailcatcher
      ports:
         - "8080:80"
         - "443:443"
      volumes:
         - $PWD/www:/var/www/html
         - $PWD/ApachePHP/000-default.conf:/etc/apache2/sites-available/000-default.conf
      environment:
         - MYSQL_ROOT_PASSWORD=appuser
         - MYSQL_ROOT_USER=password
      networks:
         app_net:
            ipv4_address: 192.168.50.12
   mailcatcher:
      image: schickling/mailcatcher
      ports:
         - "1025:1025"
         - "1080:1080"
      environment:
         MAILCATCHER_PORT: 1025
      networks:
         app_net:
            ipv4_address: 192.168.50.13
networks:
   app_net:
      driver: bridge
      ipam:
         driver: default
         config:
            - subnet: 192.168.50.0/24

The reason I have installed the network is that when I try to access the database server, I get an error related to the network.

After a long time of research, I found that when I use the volumes in database service I get back the error. If you try it, you will find that when you try to access the phpmyadmin you will get the same error.

Again, after a long time of research, I found that I can use the volumes for the database if I set up a network.

Now when I did the first run this worked like a charm. In the test folder, I had the database files in my host folder under the path /data/db

Then I stopped the docker compose using the command docker-compose stop and then I moved to another folder, in which I copied the docker-compose.yml and then I run the docker-compose up.

Unfortunately this time I got the following error:

Creating network "corfurealestatedch_app_net" with driver "bridge" ERROR: cannot create network 791b388ece09120f1138d48427969c23ded22c6fc73699b7f8c2c8e195b59586 (br-791b388ece09): conflicts with network a675c47764eba17e3338860f56512067df580cef31415906ec57fa3b64f3cdab (br-a675c47764eb): networks have overlapping IPv4

So the question is if I can set up the docker-compose.yml in a such a way that it can be used across my local projects without conflicting with the other containers IPs.

I know, of course I can have a different IP range / sub net for each project, but I am thinking that this could become a mess in a sort period of time.

Any idea on how I can fix that ?

3
задан 20 December 2017 в 04:14
3 ответа

Судя по показанной здесь ошибке, мне кажется, что докер пытается создать сеть с драйвером моста с именем br-791b388ece09, который затем жалуется, что IP-подсеть перекрывается с мостом. br-a675c47764eb.

Поэтому сначала проверьте доступные сети, используя:

$ docker network ls

Если вы видите мост с идентификатором a675c47764eb, убедитесь, что он удален, прежде чем создавать новый в той же подсети, для этого использования:

$ docker network rm a675c47764eb

Затем повторно запустите настройку докера для swarm , она должна правильно создать сеть.

В качестве альтернативы можно использовать другую подсеть IP. Замените 192.168.50.x чем-то вроде 192.168.51.x. Это также должно решить вашу проблему.

6
ответ дан 3 December 2019 в 04:52

সমস্ত নেটওয়ার্কের তালিকা করুন

$ip a

আপনি যদি br-a675c47764eb এবং এর স্থিতি সহ সেতুটি দেখেন তবে ডাউন আছে, এটিকে মুছুন

$brctl delbr br-a675c47764eb

তারপরে ডকার পুনরায় চালু করুন

$service docker restart

আবার ডকার-রচনা চালান

4
ответ дан 3 December 2019 в 04:52

Если вы запускаете его в системе Linux, просто убедитесь, что ваш iptablesоткрыл порт, который нужен вашему докеру-. Вот так:

iptables -I INPUT -p tcp --dport 80 -s 0.0.0.0 -j ACCEPT

# or

vim /etc/sysconfig/iptables

# then

systemctl restart iptables

Затем устраните конфликт networkв той же подсети:

docker network ls

docker network rm <id>

Если вышеперечисленное не работает, просто перезапустите докер, все должно быть в порядке.

1
ответ дан 29 November 2021 в 07:45

Теги

Похожие вопросы