Il m’est arrivé une mauvaise aventure ce jour en voulant ajouter un n-ième conteneur sur mon hôte docker. Je commence à en avoir quelque dizaines. Comme maintenant Traefik me permet d’en ajouter sans me soucier des problèmes de port, je ne me prive pas.
L’erreur était l’impossibilité de créer le réseau bridge par défaut parce qu’il n’y avait plus de plage IPv4 disponible. En effet pour chaque réseau bridge créé pour un projet docker-compose, docker définit un masque de sous-réseau assez généreux, voir trop. Ainsi les réseau 172.17-31.0.0/16 (soit 65000 adresses) et 192.168.0.0/20 (soit 4000 adresses) sont utilisées pour le réseau bridge. Le gestionnaire de réseau n’arrivait plus à trouver un masque disponible pour ma nouvelle application.
Une modification du fichier /etc/docker/daemon.json permet de modifier le masque de sous-réseau utilisé et ainsi économiser des adresse IPv4. En effet dans mon cas mes fichiers docker-compose.yml n’assemblent que quelques conteneur donc je n’ai pas besoin d’autant d’adresses par sous-réseau !
{
"default-address-pools":
[
{"base":"192.168.0.0/16","size":24}
]
}
Le paramètre size 24 permet de n’utiliser que le dernier octet par sous-réseau soit 256 adresses. Ceci est amplement suffisant pour mon besoin.
Tags: Docker