Je suis parfaitement satisfait de la plage d’IP que docker me donne par défaut 192.168.x.x, donc je n’ai pas besoin de créer un nouveau pont, je veux juste donner à mes conteneurs une adresse statique dans cette plage afin que je puisse diriger les navigateurs clients vers elle directement. J’ai essayé d’utiliser
RUN echo "auto eth0" >> /etc/network/interfaces
RUN echo "iface eth0 inet static" >> /etc/network/interfaces
RUN echo "address 192.168.0.250" >> /etc/network/interfaces
RUN echo "netmask 255.255.0.0" >> /etc/network/interfaces
RUN ifdown eth0
RUN ifup eth0
à partir du Dockerfile, il a correctement rempli le fichier d’interfaces, mais l’interface elle-même n’a pas changé. En fait, en lançant ifup eth0 dans le conteneur, on obtient cette erreur :
RTNETLINK answers: Operation not permitted Failed to bring up eth0
J’ai créé une nouvelle interface (docker0) dans le fichier /etc/network/interfaces de mon hôte, j’ai exécuté sudo ifup docker0 sur l’hôte, et ensuite j’ai exécuté:
docker run --net=host -i -t ...
qui récupère l’IP statique et l’attribue à docker0 dans le conteneur.