Конфликт 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_default 10.0.1.0/24 и ingress 10.0.0.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
- Если платформа установлена на несколько серверов, то выполнить /wiki/spaces/v22/pages/2468731943 пункт 7.
- Выполнить /wiki/spaces/v35/pages/269451453.
Подробнее про смену подсети можно посмотреть здесь 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_default (10.0.1.0/24) и ingress (10.0.0.0/24).
Для случая установки компонентов платформы на одну машину.
Останавливаем все контейнеры платформы (из папки с дистрибутивом платформы):
sudo ./run.sh -s
Удаляем все остановленные контейнеры:
sudo docker container prune
Удаляем сети visiology_default и ingress.
sudo docker network rm visiology_default sudo docker network rm ingress
Создаем сети visiology_default и 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_default