Docker macvlan link

Forslag på hvordan man får Docker til å prate på samme nettverket, bruke IPer på vanlige nettverket/LAN, og ha forbindelse internt i tillegg som er kjent for å være noe spesielt.

Opprette eget docker-nettverk som kobles opp mot nettverket, sett gjerne en begrensning på hvilke IPer som skal tillates som i eks her “/27″(10.0.0.128-158).

docker network create -d macvlan \
--subnet=10.0.0.0/24 \
--gateway=10.0.0.1 \
--ip-range=10.0.0.128/27 \
--aux-address 'host=10.0.0.128' \
-o parent=ens32 \
mynet

For at lokale docker prosesser, inkl maskin dette kjører på, skal få lov å “prate sammen” så må man sette opp en link.

ip link add mynet-shim link ens32 type macvlan mode bridge
ip addr add 10.0.0.128/32 dev mynet-shim
ip link set mynet-shim up
ip route add 10.0.0.128/27 dev mynet-shim

Merk at docker-nettverket vil lagres, “set and forget”. Mens linkingene av nettverkene må gjøres for hver gang maskin booter, anbefaler at skrives inn i noe startup-skript.

Etter dette så er det å ta det i bruk, spesifiser gjerne IP for å være nøye;

docker run --name mysql -e MYSQL_ROOT_PASSWORD='Hemmlig2019' --network=mynet --ip=10.0.0.129 -d mariadb

Om du er noe usikker på hva som skjedd, så docker network inspect mynet, docker inspect mysql eller hva du kjører, så finner du fort ut av det : )