⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Pilote de réseau Macvlan

Certaines applications, en particulier les applications héritées ou les applications qui surveillent le trafic réseau, s'attendent à être directement connectées au réseau physique. Dans ce type de situation, vous pouvez utiliser le pilote de réseau macvlan pour assigner une adresse MAC à l'interface réseau virtuelle de chaque conteneur, la faisant apparaître comme étant une interface réseau physique directement connectée au réseau physique. Dans ce cas, vous devez désigner une interface physique sur votre hôte Docker à utiliser pour le Macvlan, ainsi que le sous-réseau et la passerelle du réseau. Vous pouvez même isoler vos réseaux Macvlan en utilisant différentes interfaces réseau physiques.

Gardez les choses suivantes à l'esprit :

  • Vous pourriez involontairement dégrader votre réseau en raison de l'épuisement d'adresses IP ou à cause du "VLAN spread", une situation qui se produit lorsque vous avez un nombre inappropriément large d'adresses MAC uniques dans votre réseau.

  • Votre équipement réseau doit être capable de gérer le "mode promiscuité", où une interface physique peut être assignée à plusieurs adresses MAC.

  • Si votre application peut fonctionner en utilisant un bridge (sur un seul hôte Docker) ou overlay (pour communiquer à travers plusieurs hôtes Docker), ces solutions peuvent être meilleures à long terme.

Options

Le tableau suivant décrit les options spécifiques au pilote que vous pouvez passer à --opt lors de la création d'un réseau utilisant le pilote macvlan.

Option Défaut Description
macvlan_mode bridge Définit le mode Macvlan. Peut être l'un des : bridge, vepa, passthru, private
parent Spécifie l'interface parent à utiliser.

Créer un réseau Macvlan

Quand vous créez un réseau Macvlan, il peut être soit en mode bridge soit en mode 802.1Q trunk bridge.

  • En mode bridge, le trafic Macvlan passe par un périphérique physique sur l'hôte.

  • En mode 802.1Q trunk bridge, le trafic passe par une sous-interface 802.1Q que Docker crée à la volée. Cela vous permet de contrôler le routage et le filtrage à un niveau plus granulaire.

Mode bridge

Pour créer un réseau macvlan qui fait un pont avec une interface réseau physique donnée, utilisez --driver macvlan avec la commande docker network create. Vous devez aussi spécifier le parent, qui est l'interface par laquelle le trafic passera physiquement sur l'hôte Docker.

$ docker network create -d macvlan \
  --subnet=172.16.86.0/24 \
  --gateway=172.16.86.1 \
  -o parent=eth0 pub_net

Si vous devez exclure des adresses IP d'être utilisées dans le réseau macvlan, par exemple quand une adresse IP donnée est déjà utilisée, utilisez --aux-addresses :

$ docker network create -d macvlan \
  --subnet=192.168.32.0/24 \
  --ip-range=192.168.32.128/25 \
  --gateway=192.168.32.254 \
  --aux-address="my-router=192.168.32.129" \
  -o parent=eth0 macnet32

Mode 802.1Q trunk bridge

Si vous spécifiez un nom d'interface parent avec un point inclus, tel que eth0.50, Docker l'interprète comme une sous-interface de eth0 et crée la sous-interface automatiquement.

$ docker network create -d macvlan \
    --subnet=192.168.50.0/24 \
    --gateway=192.168.50.1 \
    -o parent=eth0.50 macvlan50

Utiliser un IPvlan au lieu de Macvlan

Dans l'exemple ci-dessus, vous utilisez toujours un bridge L3. Vous pouvez utiliser ipvlan à la place, et obtenir un bridge L2. Spécifiez -o ipvlan_mode=l2.

$ docker network create -d ipvlan \
    --subnet=192.168.210.0/24 \
    --subnet=192.168.212.0/24 \
    --gateway=192.168.210.254 \
    --gateway=192.168.212.254 \
     -o ipvlan_mode=l2 -o parent=eth0 ipvlan210

Utiliser IPv6

Si vous avez configuré le démon Docker pour autoriser IPv6, vous pouvez utiliser des réseaux macvlan dual-stack IPv4/IPv6.

$ docker network create -d macvlan \
    --subnet=192.168.216.0/24 --subnet=192.168.218.0/24 \
    --gateway=192.168.216.1 --gateway=192.168.218.1 \
    --subnet=2001:db8:abc8::/64 --gateway=2001:db8:abc8::10 \
     -o parent=eth0.218 \
     -o macvlan_mode=bridge macvlan216

Étapes suivantes

Apprenez comment utiliser le pilote Macvlan dans le tutoriel de mise en réseau Macvlan.