web-dev-qa-db-fra.com

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 IP Docker par défaut, j'essaie de faire en sorte que Docker utilise la plage 198.18.0.0, au lieu de 172.17.0.0, ce qui se heurte aux portails captifs utilisés dans les trains où je vis.

Après les docs , j'ai créé /etc/docker/daemon.json, et y mettre les éléments suivants:

{
    "bip":"198.18.0.0/16"
}

Cela a fonctionné pour docker0, mais il ne semble avoir affecté aucun des autres réseaux, et en utilisant docker, le premier réseau créé est 172.17.0.0, qui recrée le choc.

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

29
jrtapsell

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

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

Modifiez ou créez 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émarrez 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é)

34
rNix

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

  • Le pont par défaut
  • Réseaux de ponts générés par l'utilisateur
  • Réseaux de superposition générés en mode Swarm

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, pas d'une IP résea ) dans le daemon.json fichier. Et pour les réseaux de ponts générés par l'utilisateur, vous pouvez définir un pool de sous-réseaux à sélectionner (en supposant que l'utilisateur ne spécifie pas manuellement un sous-réseau). Pour ces deux, 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, ce qui précède définit 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 cette modification s'applique (systemctl reload docker). Et cette modification 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 plage.


Dans 18.09, Docker a ajouté la possibilité de spécifier la plage d'adresses pour les réseaux de superposition générés en mode essaim. Cela ne peut être fait qu'au moment de la création de l'essaim en ce moment, espérons qu'il sera mis à jour à l'avenir pour permettre à docker swarm update pour ajuster ces pools:

$ 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
17
BMitch

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

Avec compose: Spécifiez les réseaux personnalisés : "… Au lieu d'utiliser simplement le réseau d'application par défaut, vous pouvez spécifier vos propres réseaux avec la clé de réseau de niveau supérieur. Cela vous permet de créer des topologies plus complexes et de spécifier un réseau personnalisé pilotes et options. 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.… "

1
poige

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

0
Falko Menge