Вот проблема, я хочу развернуть API на моем сервере, но сервер работает другие сервисы, которые конфликтуют с IP по умолчанию, который был предоставлен по умолчанию для Docker0
интерфейс. Поэтому мне нужно настроить пользовательскую подсеть IP-адрес для этого интерфейса и поместив несколько контейнеров докеров, не создавая новые интерфейсы с той же подсетью, которая противоречит вышеупомянутым услугам.
Конфигурация сервиса Docker
Во-первых, нам нужно установить пользовательскую подсеть для Docker0
Интерфейс по умолчанию. Для этого нам нужно редактировать или создавать, если он не существует файл конфигурации для службы Docker. # vim/etc/docker/daemon.json
И положить это как контент:
{ "bip": "10.10.0.1/24" }
После этого нам нужно перезапустить службу докера: # Service Docker Restart
После перезагрузки Docker Service мы можем запустить ifconfig.
Чтобы увидеть, были ли изменения применены: Как мы можем видеть на изображении, Docker0
Интерфейс установлен с подсети, которую мы вставили в daemon.json
файл.
Docker Compose
Теперь мы должны установить в нашем Docker-Compose.yml
Файл, что мы хотим использовать Docker0
Интерфейс и не создавать какую-то случайную новую. Для этого вам нужно только добавить news_mode: мост
Вариант для всех ваших услуг внутри Docker-Compose.yml
Файл, как:
version: '3.3' services: db: image: mysql:5.7 restart: always environment: MYSQL_ROOT_PASSWORD: 'Lorem-Diem' MYSQL_USER: 'lorem' MYSQL_PASSWORD: 'Lorem-Ipsum' network_mode: bridge ports: - '3306:3306' volumes: - ./mysql_data:/var/lib/mysql
И после этого вы можете просто построить и поставить свои контейнеры:
$ docker-compose up -d —build
Теперь, если вы запустите ifconfig.
Опять же, вы увидите, что не были созданы новые интерфейсы.
Если вы хотите увидеть свой контейнер IP, получите идентификатор контейнера, используя $ Docker PS
и бежать $ Docker осматривает <ваш контейнер ID> | Greep -i IP
Отказ
Одиночный докер
Если вы хотите начать один документ, используя Docker0
Интерфейс, вы можете добавить - Бридж - с мостом
к вашему Docker Run
Команда, как:
$ Docker Run -it -d —net Bridge Ubuntu: 18.04/bin/bash
Вышеуказанная команда приносит отдельную контейнер, запущенный Ubuntu версии 18.04 и вызывает /bin/bash
так что вы можете запустить ifconfig.
Опять же, на вашем хост-машине, чтобы увидеть, что контейнер действительно использует по умолчанию Docker0
интерфейс.
Все контейнеры, упомянутые в этом посте, получит IP-адрес, который соответствует Docker0
подсеть.
Оригинал: «https://dev.to/macielti/custom-subnet-ip-for-docker0-interface-1jod»