No se puede acceder a los contenedores Docker desde el host a través de la networking macvlan

En mi networking Linux, no puedo acceder a los contenedores de mi docker desde el host en el que se ejecutan, a través de una networking macvlan dedicada. Todas las demás conexiones desde esta networking Macvlan están bien.

Entonces, básicamente, la configuration es:

DOCKER1 eth0 172.0.0.1 (default) | eth1 10.0.0.1 (macvlan) CONTAINER1 10.0.0.11 (macvlan) DOCKER2 eth0 172.0.0.2 (default) | eth1 10.0.0.2 (macvlan) CONTAINER2 10.0.0.12 (macvlan) 
  • El host DOCKER1 no puede llegar a CONTAINER1
  • El host DOCKER2 no puede llegar a CONTAINER2
  • El host DOCKER1 puede llegar a DOCKER2
  • Host DOCKER1 puede llegar a CONTAINER2
  • El host DOCKER2 puede llegar a DOCKER1
  • El host DOCKER2 puede llegar a CONTAINER1
  • Todos los contenedores pueden llegar el uno al otro
  • Todos los demás dispositivos en la networking física pueden llegar a todos
  • Todos pueden llegar a la puerta de enlace / internet

¿Cómo puedo hacer que el host llegue a sus propios contenedores a través de la networking macvlan?

Necesito aplicaciones específicas para interactuar a través de esta networking, por lo que usar docker exec no resolverá mi problema;).

El host no puede comunicarse con los dispositivos macvlan locales sin soporte especial de un conmutador externo. Ver, por ejemplo, esta documentation de Red Hat que analiza el uso de dispositivos Macvlan para máquinas virtuales:

Sin embargo, cuando una máquina virtual invitada está configurada para usar una interfaz de networking type = 'direct' como macvtap, a pesar de tener la capacidad de comunicarse con otros huéspedes y otros hosts externos en la networking, el invitado no puede comunicarse con su propio host.

Esta situación no es un error, es el comportamiento definido de macvtap. Debido a la forma en que el Ethernet físico del host está conectado al puente de macvtap, el tráfico en ese puente de los invitados que se reenvía a la interfaz física no puede devolverse a la stack de IP del host. Además, el tráfico de la stack de IP del host que se envía a la interfaz física no puede devolverse al puente de macvtap para reenviar a los invitados.