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.