Changer les plages d’IP utilisées par Docker

Cette page indique la configuration à appliquer pour changer les plages d’IPs utilisées par Docker.

Par défaut, docker va utiliser les deux plages :

  • 172.17.0.0/16 : Pour le network bridge (aussi appelé docker0)
  • 172.18.0.0/16 : Pour le network docker_gwbridge

Si la procédure est suivie pendant l’installation de Cyberwatch, seules les étapes 3 et 4 sont nécessaires.

  1. Stopper l’instance :

    sudo cyberwatch stop
    
  2. Déconnecter et supprimer le network docker_gwbridge

    docker network disconnect -f docker_gwbridge gateway_ingress-sbox
    docker network rm docker_gwbridge
    
  3. Éditer le fichier /etc/docker/daemon.json :

    {
      "bip": "10.0.1.1/24",
      "default-address-pools": [
        { "base": "10.0.2.0/18", "size": 24 }
      ]
    }
    

    Le champs bip (pour Bridge IP) défini la plage d’adresses IP accordée à l’interface docker0. L’exemple lui affecte la plage 10.0.1.1/24. Attention à bien configurer la plage d’adresses avec le .1 final, sans quoi docker ne démarre pas.

    Le champs default-address-pools défini la plage d’adresses IP accordée à l’interface docker_gwbridge. L’exemple lui affecte les adresses 10.0.2.0/24.

  4. Redémarrer docker :

    sudo systemctl restart docker
    
  5. Démarrer Cyberwatch :

    sudo cyberwatch start
    
  6. Vérifier les changements :

    docker network inspect bridge | grep Subnet
    docker network inspect docker_gwbridge | grep Subnet
    

Troubleshooting

Problème potentiel détecté sur CentOS.

Avec la configuration proposée, il est possible que docker ne soit plus en mesure de redémarrer correctement sur le serveur Cyberwatch. La commande :

systemctl restart docker

peut alors échouer en expliquant qu’il a été impossible de créer le network docker_gwbridge.

Il est possible de corriger ponctuellement cette erreur et de permettre à docker de redémarrer avec les commandes suivantes :

ip link add name docker0 type bridge
ip addr add dev docker0 10.10.0.1/16

Ce fix n’est que ponctuel et doit être appliquer à chaque redémarrage de docker.

Le problème peut être corrigé pour de bon dans la configuration en modifiant le fichier de configuration comme ceci :

cat > /etc/docker/daemon.json <<EOL
{
  "bip": "10.0.1.1/24",
  "default-address-pools": [
    { "base": "10.0.64.0/18", "size": 24 }
  ]
}
EOL

donnant ainsi une range d’IP plus importante à docker.

Sources :


Retour en haut