Настройка Docker, чтобы не использовать диапазон 172.17.0.0

22

Из-за проблем с пленными порталами и диапазоном IP-адресов по умолчанию я пытаюсь заставить Docker использовать диапазон 198.18.0.0 вместо 172.17.0.0, что вступает в противоречие с пленными порталами, используемыми в поездах, где я живу.

Следуя документации , я создал /etc/docker/daemon.jsonи вставил в нее следующее:

{
    "bip":"198.18.0.0/16"
}

Это сработало для docker0, но, похоже, не повлияло ни на одну из других сетей, и при использовании docker compose первая созданная сеть - 172.17.0.0, которая воссоздает конфликт.

Что я могу сделать, чтобы изменить подсеть по умолчанию для всех сетей докеров (желательно без указания моего настраиваемого диапазона IP-адресов в каждом файле компоновки)?

jrtapsell
источник

Ответы:

27

Можно переопределить диапазон по умолчанию.

$ docker -v
Docker version 18.06.0-ce, build 0ffa825

Отредактируйте или создайте файл конфигурации для демона Docker:

# nano /etc/docker/daemon.json

Добавить строки:

{
  "default-address-pools":
  [
    {"base":"10.10.0.0/16","size":24}
  ]
}

Перезапустите dockerd:

# service docker restart

Проверьте результат:

$ docker network create foo
$ docker network inspect foo | grep Subnet
                    "Subnet": "10.10.1.0/24"

Это работает и для docker-compose. Более подробная информация здесь https://github.com/moby/moby/pull/29376 (объединено)

rNix
источник
1
10.10.0.0/16 перекрывается с глобальными сетями по умолчанию. Вы можете использовать {"base": "192.168.0.0/16","size":24}. Пожалуйста, смотрите github.com/moby/moby/blob/…
Root G
11

В трех местах докер будет генерировать сетевые подсети.

  • Мост по умолчанию
  • Пользовательские мостовые сети
  • Рой режим сгенерированных оверлейных сетей

Для моста по умолчанию (называемого «мост») вы можете указать BIP (я полагаю, что это IP-адрес моста; убедитесь, что это IP-адрес хоста, а не сетевой IP-адрес ) в daemon.jsonфайле. А для созданных пользователем мостовых сетей вы можете определить пул подсетей для выбора (при условии, что пользователь не указывает подсеть вручную). Для этих двух ваш /etc/docker/daemon.jsonбудет выглядеть так:

{
  "bip": "10.200.0.1/24",
  "default-address-pools":[
    {"base":"10.201.0.0/16","size":24},
    {"base":"10.202.0.0/16","size":24}
  ]
}

Каждый параметр пула адресов выше определяет диапазон CIDR и размер подсетей, которые должны быть выделены из этого диапазона. Таким образом, приведенное выше определяет два диапазона класса B, которые выделены как сети класса C (/ 24). Вам нужно как минимум 18.06 для пулов адресов по умолчанию. Вам нужно будет перезагрузить демон docker для применения этого изменения (systemctl reload docker ). И это изменение приведет только к изменению только что созданных пользовательских сетей, поэтому вам нужно будет остановить контейнеры и удалить существующие сети в неправильном диапазоне.


В 18.09 Docker добавил возможность указывать диапазон адресов для слитого режима, создаваемого оверлейными сетями. Это можно сделать только во время создания роя прямо сейчас, надеюсь, что это будет обновлено в будущем, чтобы можно docker swarm updateбыло настроить эти пулы:

$ docker swarm init \
  --default-addr-pool 10.202.0.0/16 \
  --default-addr-pool 10.203.0.0/16 \
  --default-addr-pool-mask-length 24
BMitch
источник
1
Отличное резюме текущих опций 2018/2019. Также, если вы используете Docker Desktop, bipопция в графическом интерфейсе «Настройки / Настройки». Потому что default-address-poolsвы можете редактировать daemon.json вручную в том же графическом интерфейсе, а для роя default-addr-poolвы все равно изменяете их с помощью initкоманды.
Брет Фишер
1

Сконфигурируйте мостовую сеть по умолчанию : «… Чтобы настроить мостовую сеть по умолчанию, вы указываете опции в daemon.json. Вот пример daemon.json с несколькими указанными опциями. Укажите только те настройки, которые нужно настроить.…»

С помощью compose: Укажите пользовательские сети : "... Вместо того, чтобы просто использовать сеть приложений по умолчанию, вы можете указать свои собственные сети с помощью ключа сетей верхнего уровня. Это позволяет создавать более сложные топологии и задавать пользовательские сетевые драйверы и параметры. Вы также можете используйте его для подключения сервисов к внешним сетям, которые не управляются Compose.… »

poige
источник
Можно ли изменить диапазон IP-адресов, используемый для неявных сетей, используемых docker-compose, и сетей, для которых диапазон не установлен явно?
jrtapsell
-1

Это может быть немного жестоко, но я просто делаю, sudo ifconfig docker0 downчтобы выключить интерфейс, который конфликтует с Wi-Fi, который я пытаюсь использовать.

Фалько Менге
источник
Речь идет об использовании другого диапазона, а не об отключении сети.
Ральф Фридл
@RalfFriedl Это правда. Но как частый путешественник, который использует много разных сетей Wi-Fi, я видел конфликты всех видов портов. Поэтому вместо поиска диапазона портов можно также временно отключить сеть.
Фалько Менге