Конфликт 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)
Используйте шаги ниже, если все компоненты платформы установлены на одну машину.
Удалить все контейнеры
docker stack rm visiology
Выйти из swarm на всех нодах
docker swarm leave -f
Удалить сеть docker_gwbridge
docker network rm docker_gwbridge
Создать новую сеть, с необходимыми подсетью и шлюзом. Как пример:
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
- Если платформа установлена на несколько серверов, то выполнить Установка компонентов на разные серверы пункт 7.
- Выполнить Запуск платформы
Подробнее про смену подсети можно посмотреть здесь https://success.docker.com/article/how-do-i-change-the-docker-gwbridge-address
Смена подсети у интерфейса docker0 (172.17.0.0/16)
- Изменить файл от суперпользователя (создать, если его нет)
/etc/docker/daemon.json
Прописать все необходимые параметры:
{ "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"
Перезапустить сервис docker
sudo service docker restart
Подробнее про смену подсети можно посмотреть здесь https://docs.docker.com/v17.09/engine/userguide/networking/default_network/custom-docker0
Смена адреса подсети visiology_overlay (10.0.0.0/24) и ingress (10.0.0.0/24).
Для случая установки компонентов платформы на одну машину.
- Останавливаем все контейнеры платформы (из папки с дистрибутивом платформы).
sudo ./run.sh -s
Удаляем все остановленные контейнеры.
sudo docker container prune
- Удаляем сети visiology_overlay и ingress.
sudo docker network rm visiology_overlay sudo docker network rm ingress
- Создаем сети 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