— 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.