Featured image of post MacVLAN

MacVLAN

— Article rédigé par PiMeNT – Merci à lui —

Docker gère 3 types de connectivité pour les conteneurs.

Bridge

Un réseau ponté est le type de réseau le plus couramment utilisé dans Docker. Les réseaux pontés créés par l’utilisateur sont similaires au réseau ponté par défaut créé lors de l’installation de Docker Docker0.

Host

Les conteneurs connectés au réseau de l’hôte partagent la pile réseau de l’hôte Docker, et la configuration réseau du conteneur est exactement la même que celle de l’hôte.

MacVLAN

MacVLAN est un module du noyau Linux. Sa fonction est de permettre la configuration de plusieurs adresses MAC sur la même carte réseau physique, c’est-à-dire plusieurs interfaces. Chaque interface peut être configurée avec sa propre IP. MacVLAN est essentiellement une technologie de virtualisation de carte réseau.

Le plus grand avantage de MacVLAN est son excellente performance. Par rapport à d’autres implémentations, MacVLAN n’a pas besoin de créer un pont Linux, mais est directement connecté au réseau physique via une interface Ethernet. Examinons le cas de MacVlan.

Notre machine Docker a l’IP 172.22.50.50 dans le réseau 172.22.50.0/24. Nous allons créer un réseau virtuel qui sera utilisé pour MacVLAN dans une petite partie de cette plage.

La plage d’IP 172.22.50.80/28
Adresse de la passerelle 172.22.50.1
Le nom du réseau MacVlan docker_local_network
Interface de l’application sur l’appareil du parent eth0

La commande à exécuter sous Linux / Raspberry Pi :

1sudo docker network create 
2    -o parent=eth0
3    --subnet=172.22.50.0/24
4    --gateway=172.22.50.1
5    --ip-range=172.22.50.80/28
6    docker_local_network
7    -d macvlan

Pour vérifier que le réseau virtuel est créé :

1docker network inspect docker_local_network
 1[
 2    {
 3        "Name": "docker_local_network",
 4        "Id": "ba95fed45d6666c7a77b821aada81d0974aeb4f6ab4c7e626f9abacd7919d4c9",
 5        "Created": "2021-09-06T01:50:28.777151529+01:00",
 6        "Scope": "local",
 7        "Driver": "macvlan",
 8        "EnableIPv6": false,
 9        "IPAM": {
10            "Driver": "default",
11            "Options": {},
12            "Config": [
13                {
14                    "Subnet": "172.22.50.0/24",
15                    "IPRange": "172.22.50.80/28",
16                    "Gateway": "172.22.50.1"
17                }
18            ]
19        },
20        "Internal": false,
21        "Attachable": false,
22        "Ingress": false,
23        "ConfigFrom": {
24            "Network": ""
25        },
26        "ConfigOnly": false,
27        "Containers": {
28            "c2bbbb8daea0cdc9c0d4f9ea8c6c1bb82c72524a0ec965c984ceb46725151a57": {
29                "Name": "adguardhome",
30                "EndpointID": "05e24d36874229b2583e2cf7b365f85eb90f910e708fe6b1a902849443821afd",
31                "MacAddress": "02:42:ac:16:32:51",
32                "IPv4Address": "172.22.50.81/24",
33                "IPv6Address": ""
34            },
35            "ca6c9368594b409487a584437a45dc41dabf816d44f8ec8c05a54239728a85e5": {
36                "Name": "npm",
37                "EndpointID": "5f4ba3a75356ec3e011b97f6b0b24c4a0d1bcd456601b54120c7b0dee5d513d5",
38                "MacAddress": "02:42:ac:16:32:55",
39                "IPv4Address": "172.22.50.85/24",
40                "IPv6Address": ""
41            }
42        },
43        "Options": {
44            "parent": "eth0"
45        },
46        "Labels": {}
47    }
48]

Ou alors :

1docker network ls
1NETWORK ID     NAME                   DRIVER    SCOPE
2f0e84feb2e8d   bridge                 bridge    local
3ba95fed45d66   docker_local_network   macvlan   local
4b8aa306ca6fd   host                   host      local
5ce5720c5c25b   none                   null      local

Maintenant que le réseau est créé, nous pouvons attribuer les IPs de 172.22.50.81 à 172.22.50.94 aux conteneurs.

Licensed under CC BY-NC-SA 4.0
Généré avec Hugo
Thème Stack conçu par Jimmy