Налаштування Docker не використовувати діапазон 172.17.0.0


22

Через проблеми з портами, що перебувають у полоні, і IP-діапазон Docker за замовчуванням, я намагаюся змусити 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 у кожному складеному файлі)?

Відповіді:


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}
  ]
}

Перезапустити докерд:

# service docker restart

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

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

Він працює і для докер-композицій. Більше інформації тут https://github.com/moby/moby/pull/29376 (об'єднано)


1
10.10.0.0/16 перекривається глобальними мережами за замовчуванням. Ви можете використовувати {"base": "192.168.0.0/16"""ize":24}. Будь ласка, дивіться github.com/moby/moby/blob/…
Root G

11

Є три місця, докер буде генерувати мережеві підмережі.

  • Міст за замовчуванням
  • Мостові мережі, створені користувачем
  • Режим роя генерується накладними мережами

Для мосту за замовчуванням (який називається "міст") ви можете вказати BIP (я вважаю, це Bridge 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 та розмір підмереж, які слід виділити з цього діапазону. Отже, вище визначає два діапазони класу В, які виділяються як мережі класу С (/ 24). Для пулів адрес за замовчуванням вам потрібно принаймні 18.06. Вам потрібно буде перезавантажити демон-докер, щоб застосувати цю зміну ( systemctl reload docker). І ця зміна змінить лише новостворені мережі користувачів, тому вам потрібно буде зупинити контейнери та видалити існуючі мережі в неправильному діапазоні.


У 18.09 Докер додав можливість вказувати діапазон адрес для режиму згенерованого режиму згенерованого режиму. Це можна зробити лише під час створення рою прямо зараз, сподіваємось, що це буде оновлено у майбутньому, що дозволить 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

1
Чудовий підсумок поточних варіантів 2018/2019. Також, якщо ви використовуєте Docker Desktop, bipопція в інтерфейсі налаштувань / налаштувань. Тому що default-address-poolsви можете редагувати daemon.json вручну в тому самому графічному інтерфейсі, а для swarm's default-addr-poolви все одно змінюєте їх за допомогою initкоманди.
Брет Фішер

1

Налаштуйте мостову мережу за замовчуванням : "... Для налаштування мостової мережі за замовчуванням ви вкажете параметри в daemon.json. Ось приклад daemon.json із вказаними кількома параметрами. Вкажіть лише ті параметри, які потрібно налаштувати. ..."

Склади: Вкажіть власні мережі : "... Замість того, щоб використовувати мережу додатків за замовчуванням, ви можете вказати власні мережі за допомогою клавіші мереж верхнього рівня. Це дозволяє створювати складніші топології та вказувати власні мережеві драйвери та параметри. Ви також можете використовуйте його для підключення служб до мереж, створених зовні, які не управляються Compose. ... "


Чи можливо змінити діапазон IP, який використовується для неявних мереж, що використовуються docker-compose, і тих, у яких діапазон не встановлений явно?
jrtapsell

-1

Це може бути трохи жорстоко, але я просто роблю це, sudo ifconfig docker0 downщоб вимкнути інтерфейс, який конфліктує з Wi-Fi, який я намагаюся використовувати.


Питання полягає у використанні іншого діапазону, а не у відключенні мереж.
РальфФрідл

@RalfFriedl Це правда. Але як частий мандрівник, який використовує багато різних мереж Wi-Fi, я бачив, що всілякі діапазони портів конфліктують. Тож замість пошуку діапазону портів можна також тимчасово відключити мережу.
Falko Menge
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.