Diese Anleitung soll helfen, ein am Docker Host anliegendes VLAN für Docker Container verfügbar zu machen. Dadurch können die Container komplett in das Netzwerk eingebunden werden. Einzelne Port-Freigaben für Container werden nicht mehr benötigt. Eine Doppelbelegung von Ports kann so vermieden werden.
In dieser Anleitung soll das VLAN mit der ID 2
, anliegend auf dem Interface enp2s0f0
für Dockercontainer verfügbar gemacht werden.
sudo vi /etc/netplan/mynetplan-config.yaml
Inhalt von mynetplan-config.yaml
network: version: 2 ethernets: enp2s0f0: {} vlans: vlan.4: id: 4 link: enp2s0f0 dhcp4: no addresses: [192.168.3.9/24] gateway4: 192.168.3.1 nameservers: addresses: [192.168.3.1] vlan.2: id: 2 link: enp2s0f0 dhcp4: no addresses: [192.168.1.10/24] gateway4: 192.168.1.1 nameservers: addresses: [192.168.1.1]
Konfiguration übernehmen sudo netplan apply
In dieser Anleitung soll das VLAN mit der ID 2
, anliegend auf dem Interface bond0
für Dockercontainer verfügbar gemacht werden.
cd /etc/sysconfig/network-scripts sudo vi ifcfg-bond0.2
Inhalt von ifcfg-bond0.2
DEVICE=bond0.2 VLAN_ROW_DEVICE=bond0 VLAN_ID=2 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.1.10 NETMASK=255.255.255.0
Netzwerkdienste neustarten sudo /etc/rc.network restart
ip link del MYLAN ip link add MYLAN link bond0.2 type macvlan mode bridge ip addr add 192.168.1.80/32 dev MYLAN ip link set MYLAN up ip route add 192.168.1.80/28 dev MYLAN
docker network create -d macvlan \ --subnet=192.168.1.0/24 \ --gateway=192.168.1.1 \ --ip-range=192.168.1.80/28 \ --aux-address 'host=192.168.1.80' \ -o parent=bond0.2 MYLAN
$ docker run --rm -itd \ --network MYLAN \ --name my-alpine \ alpine:latest \ ash
Netzwerk vom neuen Container prüfen:
docker container inspect my-alpine ...truncated... "Networks": { "MYLAN": { "IPAMConfig": null, "Links": null, "Aliases": [ "12f5c3c9ba5c" ], "NetworkID": "c6203997842e654dd5086abb1133b7e6df627784fec063afcbee5893b2bb64db", "EndpointID": "aa08d9aa2353c68e8d2ae0bf0e11ed426ea31ed0dd71c868d22ed0dcf9fc8ae6", "Gateway": "192.168.1.1", "IPAddress": "192.168.1.81", "IPPrefixLen": 24, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:10:56:02", "DriverOpts": null } } ...truncated