Конфликт IP адресов с подсетями Docker

Конфликт IP адресов с подсетями Docker

Подсети 172.17.0.0/16, 172.18.0.0/16, 10.0.0.0/24, 10.0.1.0/24.

По умолчанию Docker использует сети bridge 172.17.0.0/16, docker_gwbridge 172.18.0.0/16, visiology_overlay 10.0.0.0/24 и ingress 10.0.1.0/24 для организации взаимодействия между контейнерами платформы. Если эти подсети совпали с подсетью, в которой разворачивается платформа или в которой находятся клиенты платформы, то нужно поменять подсеть Docker.


Узнать подсети адаптеров можно с помощью команды ifconfig.

Если все интерфейсы не поместились в окно вывода, используйте команду ifconfig | more.

Показать сети docker можно командой docker network ls.

Узнать адрес сети docker можно командой docker network inspect <network name>.

Смена подсети у интерфейса docker_gwbridge (172.18.0.0/16)

Используйте шаги ниже, если все компоненты платформы установлены на одну машину.


  1. Удалить все контейнеры:

    docker stack rm visiology
  2. Выйти из swarm на всех нодах:

    docker swarm leave -f
  3. Удалить сеть docker_gwbridge:

    docker network rm docker_gwbridge
  4. Создать новую сеть, с необходимыми подсетью и шлюзом. Как пример:

    docker network create  \
    --subnet 172.20.0.0/20 \
    --gateway 172.20.0.1 \
    -o com.docker.network.bridge.enable_icc=false \
    -o com.docker.network.bridge.name=docker_gwbridge \
    docker_gwbridge
  5. Если платформа установлена на несколько серверов, то выполнить Установка компонентов на разные серверы пункт 7.
  6. Выполнить Запуск платформы.

Подробнее про смену подсети можно посмотреть здесь https://success.docker.com/article/how-do-i-change-the-docker-gwbridge-address.

Смена подсети у интерфейса docker0 (172.17.0.0/16)

  1. Изменить файл от суперпользователя (создать, если его нет) /etc/docker/daemon.json
  2. Прописать все необходимые параметры:

    {
      "bip": "192.168.1.5/24",
      "fixed-cidr": "192.168.1.5/25",
      "fixed-cidr-v6": "2001:db8::/64",
      "mtu": 1500,
      "default-gateway": "10.20.1.1",
      "default-gateway-v6": "2001:db8:abcd::89",
      "dns": ["10.20.1.2","10.20.1.3"]
    }

    В минимальном случае должно хватить только параметра "bip".

  3. Перезапустить сервис docker:

    sudo service docker restart

    Подробнее про смену подсети можно посмотреть здесь https://docs.docker.com/v17.09/engine/userguide/networking/default_network/custom-docker0.

Смена адреса подсети visiology_overlay (10.0.1.0/24) и ingress (10.0.0.0/24).

Для случая установки компонентов платформы на одну машину.

  1. Останавливаем все контейнеры платформы (из папки с дистрибутивом платформы):

    sudo ./run.sh -s
  2. Удаляем все остановленные контейнеры:

    sudo docker container prune
  3. Удаляем сети visiology_overlay и ingress.

    sudo docker network rm visiology_overlay
    sudo docker network rm ingress
  4. Создаем сети visiology_overlay и ingress новыми адресами:

    sudo docker network create \
      --driver overlay \
      --ingress \
      --subnet=10.7.7.0/24 \
      --gateway=10.7.7.1 \
      ingress
     sudo docker network create \
      --driver overlay \
      --subnet=10.7.8.0/24 \
      --gateway=10.7.8.1 \
      --attachable \
      visiology_overlay