101 votes

Configuration de Docker pour ne pas utiliser la plage 172.17.0.0

En raison de problèmes avec les portails captifs et la plage d'adresses IP par défaut de Docker, j'essaie de faire en sorte que Docker utilise la plage 198.18.0.0, au lieu de 172.17.0.0, ce qui entre en conflit avec les portails captifs utilisés dans les trains où je vis.

Suivant les docs J'ai créé /etc/docker/daemon.json et y mettre ce qui suit :

{
    "bip":"198.18.0.0/16"
}

Cela a fonctionné pour docker0, mais il semble que cela n'ait affecté aucun des autres réseaux, et en utilisant docker compose le premier réseau créé est 172.17.0.0, ce qui recrée le conflit.

Que puis-je faire pour changer le sous-réseau par défaut pour todos réseaux docker (de préférence sans avoir à indiquer ma plage d'IP personnalisée dans chaque fichier compose) ?

119voto

Sebastien Varrette Points 2277

Il est possible de redéfinir la plage par défaut.

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

Modifier ou créer un fichier de configuration pour le démon Docker :

# nano /etc/docker/daemon.json

Ajouter des lignes :

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

Redémarrer dockerd :

# service docker restart

Vérifiez le résultat :

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

Cela fonctionne aussi pour docker-compose. Plus d'informations ici https://github.com/moby/moby/pull/29376 (fusionné)

68voto

BMitch Points 4794

Il y a trois endroits où docker va générer des sous-réseaux.

  • Le pont par défaut
  • Réseaux de ponts générés par les utilisateurs
  • Réseaux superposés générés en mode essaim

Pour le pont par défaut (appelé "bridge"), vous pouvez spécifier BIP (je crois que c'est Bridge IP ; assurez-vous qu'il s'agit d'une IP hôte et non d'une IP réseau. ) dans le daemon.json fichier. Et pour les réseaux de pont générés par l'utilisateur, vous pouvez définir un pool de sous-réseaux à choisir (en supposant que l'utilisateur ne spécifie pas manuellement un sous-réseau). Pour ces deux derniers, votre /etc/docker/daemon.json ressemblerait :

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

Chaque paramètre de pool d'adresses ci-dessus définit une plage CIDR et la taille des sous-réseaux à allouer à partir de cette plage. Ainsi, les paramètres ci-dessus définissent deux plages de classe B qui sont allouées en tant que réseaux de classe C (/24). Vous avez besoin d'au moins 18.06 pour les pools d'adresses par défaut. Vous devrez recharger le démon Docker pour que ce changement soit appliqué ( systemctl reload docker ). Et ce changement ne modifiera que les réseaux d'utilisateurs nouvellement créés, vous devrez donc arrêter les conteneurs et supprimer les réseaux existants dans la mauvaise gamme.


Dans la version 18.09, Docker a ajouté la possibilité de spécifier la plage d'adresses pour les réseaux superposés générés en mode essaim. Pour l'instant, cela ne peut être fait qu'au moment de la création de l'essaim, mais nous espérons que cela sera mis à jour à l'avenir afin de permettre à l'utilisateur d'avoir accès à ces réseaux. docker swarm update pour régler ces piscines :

$ 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

5voto

StealthyDev Points 21

J'utilise Bureau Docker dans un Windows système d'exploitation et j'ai essayé de changer l'IP du pont par défaut.

Docker lance une erreur et me demande de réinitialiser les paramètres à chaque fois que j'essaie de modifier juste le bip dans les paramètres.

Cela a fonctionné : (il faut plonger en profondeur et comprendre comment cela fonctionne)

{
  "bip": "192.168.1.5/24", 
  "fixed-cidr": "192.168.1.5/25", 
  "default-address-pools":[
      { "base":"192.168.2.5/24", "size":28 }
  ]
}

1voto

cyphun Points 53

Configurer le réseau de pontage par défaut : " Pour configurer le réseau de pontage par défaut, vous spécifiez des options dans daemon.json. Voici un exemple de daemon.json avec plusieurs options spécifiées. Ne spécifiez que les paramètres que vous avez besoin de personnaliser. "

Avec composer : Spécifier des réseaux personnalisés : " Au lieu d'utiliser simplement le réseau par défaut de l'app, vous pouvez spécifier vos propres réseaux avec la clé de réseau de premier niveau. Cela vous permet de créer des topologies plus complexes et de spécifier des pilotes et des options de réseau personnalisés. Vous pouvez également l'utiliser pour connecter des services à des réseaux créés en externe qui ne sont pas gérés par Compose. "

-1voto

Falko Menge Points 97

C'est peut-être un peu brutal, mais je fais simplement un sudo ifconfig docker0 down pour fermer l'interface qui entre en conflit avec le wifi que j'essaie d'utiliser.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X