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