• Docker
  • [Docker] assigner une IPv4 statique

Salut,

J'ai besoin d'utiliser une IPv4 statique avec un Docker passant par Traefik, donc le network "proxy". Le souci est que je me prends une erreur que je ne sais pas résoudre

docker: Error response from daemon: Invalid address xx.xx.xx.xx: It does not belong to any of this network's subnets.

Des pistes ?

    Aerya
    Salut,

    je ne connais pas très bien docker, mais le "network proxy" dont tu fais mention, c'est le network docker par défaut ?
    Si oui, il me semble avoir eu un problème similaire quand je faisais joujou avec docker. Il m'était impossible de définir une ip statique sur le network par défaut. Il fallait créer son propre réseau docker network create avec sa plage ip. Puis faire pointer le container vers ce réseau avec --net en plus du --ip.

    En espérant que ça puisse t'aider, sinon je passe mon tour 🙂

    Le network "proxy" est celui utilisé par Traefik, pour les redirections de domaines + SSL. Du coup je bloque justement sur l'ajout d'une IP sur un network existant comme celui-ci.

    Re, je modifie un peu le sujet et la solution vu que j'ai trouvé plus fonctionnel (100% des cas testés chez moi).

    Pour ajouter un 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
    Aerya a renommé le titre en [Docker] assigner une IPv4 statique.

    Sympa l'astuce, je testerai ça

    un an plus tard

    Salut! sympa et fonctionnel. Cependant as-tu réglé ton problème pour faire passer tes ipfixe via Traefik?

    Répondre…