Konfigurowanie Dockera do nieużywania zakresu 172.17.0.0

22

Z powodu problemów z portalami typu captive i domyślnym zakresem adresów IP Dockera, staram się, aby Docker używał zakresu 198,18.0.0 zamiast 172.17.0.0, co koliduje z portalami używanymi w pociągach, w których mieszkam.

Zgodnie z dokumentami utworzyłem /etc/docker/daemon.jsoni umieściłem w nim następujące elementy:

{
    "bip":"198.18.0.0/16"
}

Działa to w przypadku docker0, ale wydaje się, że nie wpłynęło to na żadną z innych sieci, a przy użyciu komponowania docker pierwsza utworzona sieć to 172.17.0.0, która odtwarza konflikt.

Co mogę zrobić, aby zmienić domyślną podsieć dla wszystkich sieci dokerów (najlepiej bez konieczności podawania mojego niestandardowego zakresu adresów IP w każdym pliku tworzenia)?

jrtapsell
źródło

Odpowiedzi:

27

Możliwe jest ponowne zdefiniowanie domyślnego zakresu.

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

Edytuj lub utwórz plik konfiguracyjny demona dokera:

# nano /etc/docker/daemon.json

Dodaj linie:

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

Uruchom ponownie okno dokowane:

# service docker restart

Sprawdź wynik:

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

Działa również w komponowaniu dokerów. Więcej informacji tutaj https://github.com/moby/moby/pull/29376 (scalone)

rNix
źródło
1
10.10.0.0/16 pokrywa się z globalnymi sieciami domyślnymi. Możesz użyć {„base”: „192.168.0.0/16","size":24}. Zobacz github.com/moby/moby/blob/…
Root G
11

Istnieją trzy miejsca, w których doker generuje podsieci sieciowe.

  • Domyślny most
  • Sieci mostowe generowane przez użytkowników
  • Generowane w trybie roju sieci nakładkowe

W przypadku domyślnego mostu (zwanego „mostem”) możesz określić BIP (uważam, że to jest IP mostu; upewnij się, że jest to IP hosta, a nie IP sieci ) w daemon.jsonpliku. W przypadku sieci mostów generowanych przez użytkownika można zdefiniować pulę podsieci, z której można wybierać (zakładając, że użytkownik nie określi ręcznie podsieci). Dla tych dwóch /etc/docker/daemon.jsonwyglądałoby to tak:

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

Każde powyższe ustawienie puli adresów określa zakres CIDR i rozmiar podsieci, które mają zostać przydzielone z tego zakresu. Zatem powyższe definiuje dwa zakresy klasy B, które są alokowane jako sieci klasy C (/ 24). Potrzebujesz domyślnej puli adresów co najmniej 18,06. Aby zastosować tę zmianę, należy ponownie załadować demona dokera systemctl reload docker. Ta zmiana zmodyfikuje tylko nowo utworzone sieci użytkowników, więc musisz zatrzymać kontenery i usunąć istniejące sieci w niewłaściwym zakresie.


W 18.09 Docker dodał możliwość określenia zakresu adresów dla sieci nakładek generowanych w trybie roju. Można to zrobić tylko w momencie tworzenia roju, mam nadzieję, że zostanie to zaktualizowane w przyszłości, aby umożliwić docker swarm updatedostosowanie tych pul:

$ 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
źródło
1
Świetne podsumowanie aktualnych opcji 2018/2019. Ponadto, jeśli używasz Docker Desktop, bipopcja w GUI Ustawienia / Preferencje. Dla default-address-poolsmożesz edytować daemon.json ręcznie w tym samym GUI, a dla roju default-addr-pooljeszcze zmienić je z initpolecenia.
Bret Fisher
1

Skonfiguruj domyślną sieć pomostową : „… Aby skonfigurować domyślną sieć pomostową, określ opcje w daemon.json. Oto przykład daemon.json z kilkoma określonymi opcjami. Podaj tylko ustawienia, które należy dostosować.…”

Z komponuj: Określ sieci niestandardowe : „… Zamiast korzystać z domyślnej sieci aplikacji, możesz określić własne sieci za pomocą klucza sieci najwyższego poziomu. Pozwala to tworzyć bardziej złożone topologie oraz określać niestandardowe sterowniki i opcje sieciowe. Możesz także używaj go do łączenia usług z zewnętrznie utworzonymi sieciami, które nie są zarządzane przez Compose.… ”

poige
źródło
Czy można zmienić zakres adresów IP używanych w niejawnych sieciach używanych przez docker-compose i tych, które nie mają jawnie ustawionego zakresu?
jrtapsell
-1

Może to być trochę brutalne, ale po prostu robię, sudo ifconfig docker0 downaby zamknąć interfejs, który jest w konflikcie z Wi-Fi, którego próbuję użyć.

Falko Menge
źródło
Pytanie dotyczy użycia innego zakresu, a nie wyłączenia sieci.
RalfFriedl
@RalfFriedl To prawda. Ale jako częsty podróżnik, który korzysta z wielu różnych sieci Wi-Fi, widziałem, że różne zakresy portów są w konflikcie. Zamiast szukać zakresu portów, można także tymczasowo wyłączyć sieć.
Falko Menge