Attribuer une IP(v4) statique à un container Docker

dedicated 16 sept. 2018

Pour ajouter une IPv4 statique à un container Docker il faut sur l’hôte créer un réseau macvlan dépendant de l’interface réseau principale pour attribuer des IP à des adresses MAC.
Pour avoir l’interface réseau principale de sa machine on fait un petit sudo ifconfig et on trouve ensuite l’interface du genre eth0 ou enp2s0.

Quand on demande une IPv4 à son hébergeur il nous donne aussi sa gateway (chez lui), pour l’exemple ce sera 91.82.73.44.
Il communique aussi souvent le subnet ou il est à calculer tout seul. Par exemple, pour une IP du type 12.13.14.156, le subnet sera 12.13.14.0/24 puisque /24 permet d’avoir des IP allant jusqu’à .254, donc mon IP en .156 est bien dedans.
Et enfin il faut générer une adresse MAC pour cette IP (panel hébergeur), dans cet exemple je prends 24-FA-56-15-E0-A6.

Fort de toutes ces infos je peux donc créer ma nouvelle interface réseau Docker.

docker network create -d macvlan -o macvlan_mode=bridge --subnet=12.13.14.0/24 --gateway=91.82.73.44 -o parent=enp2s0 pontmacvlan

Vous verrez ensuite via Docker (docker network ls) ou Portainer (/#/networks) une interface “pontmacvlan”

NETWORK ID          NAME                DRIVER              SCOPE
450e2ef05f54        bridge              bridge              local
c1cde3c00894        host                host                local
ac4a2d135dd2        pontmacvlan         macvlan             local
d5bd997f4c60        none                null                local
ce2e1e8ffc4c        proxy               bridge              local

De là on peut créer son container Docker avec l’IPv4 statique demandée chez son hébergeur

docker run -d \
--name=dockertest \
--restart always \
-v /home/aerya/docker/dockertest:/config \
-e TZ=Europe/Paris \
-p 1337:9234 \
--net pontmacvlan \
--mac-address 24-FA-56-15-E0-A6 \
--ip 12.13.14.156 \
--label=com.centurylinklabs.watchtower.enable=true \
aerya/dockertest

Mots clés