MACVLAN creëert meerdere virtuele netwerkinterfaces met verschillende MAC-adressen. Op deze manier, als je systeem meerdere IP-adressen met MAC-adressen heeft, kunnen we meerdere virtuele netwerkinterfaces maken die elk hun eigen IP-adres en MAC-adres hebben.
MACVLAN hoeft geen mac-adressen van de systemen binnen het netwerk te leren (identificeren) om verkeer te verdelen, aangezien het elk Mac-adres kent, dit maakt het snel en gemakkelijk in te stellen dan een bridge-type netwerk.
Als een container poort 8000 van de host gebruikt, kunnen geen andere containers die poort gebruiken.
Het koppelen van meerdere poorten aan de container kan worden gedaan door het poortbereik op te geven, maar deze bewerking kost meer tijd, afhankelijk van nr. van te binden poorten.
IPTables-regels worden omslachtig omdat de bindingen toenemen.
IPTables worden niet beïnvloed.
Geen poortbinding.
Makkelijk op te zetten.
Sneller dan bridge-netwerken.
Voorbeeld:
Host-IP: 192.168.182.130
Hostsubnet: 192.168.182.0
Gastheermasker: 24
Hostgateway: 192.168.182.2
Host ethernet-interface: ens33
docker network create -d macvlan -o macvlan_mode=bridge --subnet=192.168.182.0/24 --gateway=192.168.182.2 -o parent=ens33 macvlan_bridge
Bovenstaande opdracht maakt netwerk met de naam 'macvlan_bridge'. Controleer goed jouw gegevens dat die overeenkomen en pas de opdracht op jouw omgeving aan.
Voorbeeld:
Host bevat meerdere openbaar toegankelijke IP-adressen met MAC-adressen.
Extra IP/MAC host: 192.168.182.10/00:50:56:00:60:42
docker run --name cont1 --net=macvlan_bridge --ip=192.168.182.10 --mac-address 00:50:56:00:60:42 -itd nginx
Voorbeeld zonder MAC-adres:
docker run --name cont2 --net=macvlan_bridge --ip=192.168.182.11 -itd nginx
Voorbeeld van een andere container:
docker run --name cont3 --net=macvlan_bridge --ip=192.168.182.12 -itd httpd
Controleer of de containers draaien met:
docker ps
Controleer op IP-adres in je URL:
Om de container en de netwerk instellingen te controleren gaan we met docker inspect
de container instellingen bekijken.
docker container inspect cont2
"Networks": {
"macvlan_bridge": {
"IPAMConfig": {
"IPv4Address": "192.168.182.11"
},
"Links": null,
"Aliases": [
"f68a60aba763"
],
"NetworkID": "d6adfdaa0159d03df6a5106c7d5b397283af35a41424f9daf7fa25cf3140d5c3",
"EndpointID": "286a9f6bf98384e426e703c4124e2135537c6a4bc1bde5dc7879e7b1338b505b",
"Gateway": "192.168.182.2",
"IPAddress": "192.168.182.11",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:c0:a8:b6:0b",
"DriverOpts": null