Queremos interconectar dos contenedores que estan en dos máquinas diferentes. Además estas dos máquinas no se encuentran en la misma red.
Así pues, lo primero que haremos será crear una red privada virtual con Zerotier. Gracias a este enlace de capa 2 virtual podremos crear interfaces vLAN asociadas a la targeta de red virtual que tenemos en cada máquina.
Hasta aquí tenemos la red sobre la que montaremos la interconexión de conectores definido. Este punto también se podría hacer sin Zerotier. Simplemente configurando las vLAN directamente contra interfaces de red físicas. Eso si, la rutabilidad entre las dos máquinas debería permitir encontrarse.
Seguidamente creamos los elementos de red de Docker, concretamente usamos el módulo de red macvlan que nos va a permitir asociar la interfaces de red virtuales de los contenedores con las interfaces vLAN que se han creado en la máquina.
En el siguiente puedes ver una representación gráfica de la explicación:
Network ID and routes
ip link add link ztks52m2q6 name ztks52m2q6.10 type vlan id 10
ip link set dev ztks52m2q6.10 up
ip link add link ztks52m2q6 name ztks52m2q6.20 type vlan id 20
ip link set dev ztks52m2q6.20 up
docker network create -d macvlan --subnet=10.220.10.0/24 --gateway=10.220.10.1 -o parent=ztks52m2q6.10 macvlan_net10
docker network create -d macvlan --subnet=10.220.20.0/24 --gateway=10.220.20.1 -o parent=ztks52m2q6.20 macvlan_net20
docker run -itd --net=macvlan_net10 --ip=10.220.10.11 --name bbox01 busybox:latest
docker run -itd --net=macvlan_net20 --ip=10.220.20.11 --name bbox02 busybox:latest
ip link add link ztks52m2q6 name ztks52m2q6.10 type vlan id 10
ip link set dev ztks52m2q6.10 up
ip link add link ztks52m2q6 name ztks52m2q6.20 type vlan id 20
ip link set dev ztks52m2q6.20 up
docker network create -d macvlan --subnet=10.220.10.0/24 --gateway=10.220.10.1 -o parent=ztks52m2q6.10 macvlan_net10
docker network create -d macvlan --subnet=10.220.20.0/24 --gateway=10.220.20.1 -o parent=ztks52m2q6.20 macvlan_net20
docker run -itd --net=macvlan_net10 --ip=10.220.10.22 --name bbox03 busybox:latest
docker run -itd --net=macvlan_net20 --ip=10.220.20.22 --name bbox04 busybox:latest