Configurazione di Docker per non utilizzare l'intervallo 172.17.0.0


22

A causa di problemi con i portali captive e l'intervallo IP Docker predefinito, sto cercando di fare in modo che Docker utilizzi l'intervallo 198.18.0.0, anziché 172.17.0.0, che si scontra con i portali captive utilizzati sui treni in cui vivo.

Seguendo i documenti , ho creato /etc/docker/daemon.jsone inserito quanto segue:

{
    "bip":"198.18.0.0/16"
}

Questo ha funzionato per docker0, ma sembra non aver influito su nessuna delle altre reti, e usando docker componi la prima rete creata è 172.17.0.0, che ricrea lo scontro.

Cosa posso fare per modificare la sottorete predefinita per tutte le reti docker (preferibilmente senza dover indicare il mio intervallo IP personalizzato in ogni file di composizione)?

Risposte:


27

È possibile ridefinire l'intervallo predefinito.

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

Modifica o crea il file di configurazione per il demone docker:

# nano /etc/docker/daemon.json

Aggiungi linee:

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

Riavvia dockerd:

# service docker restart

Controlla il risultato:

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

Funziona anche per la composizione docker. Maggiori informazioni qui https://github.com/moby/moby/pull/29376 (unito)


1
10.10.0.0/16 si sovrappone alle reti globali predefinite. Puoi utilizzare {"base": "192.168.0.0/16","size":24}. Si prega di consultare github.com/moby/moby/blob/…
Root G

11

Esistono tre posizioni in cui la finestra mobile genererà subnet di rete.

  • Il bridge predefinito
  • Reti bridge generate dall'utente
  • La modalità Swarm ha generato reti overlay

Per il bridge predefinito (chiamato "bridge"), puoi specificare BIP (credo che sia Bridge IP; assicurati che sia un IP host, non un IP di rete ) nel daemon.jsonfile. E per le reti bridge generate dall'utente è possibile definire un pool di sottoreti da cui scegliere (supponendo che l'utente non specifichi manualmente una sottorete). Per questi due, /etc/docker/daemon.jsonsembreresti:

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

Ogni impostazione del pool di indirizzi sopra definita definisce un intervallo CIDR e le dimensioni delle sottoreti da allocare da tale intervallo. Quindi quanto sopra definisce due intervalli di classe B che sono allocati come reti di classe C (/ 24). È necessario almeno 18.06 per i pool di indirizzi predefiniti. Sarà necessario ricaricare il demone docker per applicare questa modifica ( systemctl reload docker). E questa modifica modificherà solo le reti di utenti appena create, quindi dovrai arrestare i contenitori ed eliminare le reti esistenti nell'intervallo errato.


Nel 18.09, Docker ha aggiunto la possibilità di specificare l'intervallo di indirizzi per le reti overlay generate in modalità sciame. Questo può essere fatto solo al momento della creazione dello sciame in questo momento, si spera che verrà aggiornato in futuro per consentire docker swarm updatedi regolare questi pool:

$ 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
Ottimo riepilogo delle attuali opzioni 2018/2019. Inoltre, se si utilizza Docker Desktop, l' bipopzione nella GUI Impostazioni / Preferenze. Perché default-address-poolspuoi modificare manualmente daemon.json nella stessa GUI, e per gli sciami default-addr-poolpuoi comunque cambiarli con il initcomando.
Bret Fisher,

1

Configurare la rete bridge predefinita : "... Per configurare la rete bridge predefinita, specificare le opzioni in daemon.json. Ecco un esempio daemon.json con diverse opzioni specificate. Specificare solo le impostazioni che è necessario personalizzare. ..."

Con componi: Specifica reti personalizzate : "... Invece di utilizzare solo la rete di app predefinita, puoi specificare le tue reti con la chiave di rete di livello superiore. In questo modo puoi creare topologie più complesse e specificare driver e opzioni di rete personalizzati. Puoi anche usalo per connettere servizi a reti create esternamente che non sono gestite da Compose ... "


È possibile modificare l'intervallo IP utilizzato per le reti implicite utilizzate da docker-compose e quelle che non hanno l'intervallo impostato in modo esplicito?
jrtapsell,

-1

Potrebbe essere un po 'brutale, ma faccio semplicemente uno sudo ifconfig docker0 downper chiudere l'interfaccia che è in conflitto con il wifi che sto cercando di usare.


La domanda riguarda l'uso di un altro intervallo, non lo spegnimento della rete.
RalfFriedl,

@RalfFriedl Questo è vero. Ma come viaggiatore frequente che utilizza molte reti Wi-Fi diverse, ho visto conflitti di tutti i tipi di porte. Quindi, invece di cercare un intervallo di porte, è anche possibile disattivare temporaneamente la rete.
Falko Menge,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.