two networks network expose compose networking docker tcp-ip linux-containers

networking - networks - ¿Tiene un contenedor acoplador su propia pila TCP/IP?



docker network connection (1)

La pila de red, como en "el código", definitivamente no está en el contenedor, está en el kernel del cual solo hay uno compartido por el host y todos los contenedores (ya sabías esto). Lo que cada contenedor tiene es su propio espacio de nombres de red separado, lo que significa que tiene sus propias interfaces de red y tablas de enrutamiento.

Aquí hay un breve artículo que presenta la noción con algunos ejemplos: http://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/ y encontré este artículo útil también: http://containerops.org/2013/11/19/lxc-networking/

Espero que esto te dé suficientes consejos para cavar más profundo.

Estoy tratando de entender lo que sucede bajo el capó de un paquete de red que viene del cable conectado a la máquina host y dirigido a una aplicación dentro de un contenedor Docker.

Si fuera una VM clásica, sé que un paquete que llegue al host será transmitido por el hipervisor (digamos VMware, VBox, etc.) a la NIC virtual de la VM y desde allí a través de la pila TCP / IP del sistema operativo invitado. , finalmente llegando a la aplicación.

En el caso de Docker, sé que un paquete que viene en la máquina host se reenvía desde la interfaz de red del host al puente docker0 , que está conectado a un veth par que termina en la interfaz virtual eth0 dentro del contenedor. ¿Pero después de eso? Como todos los contenedores Docker usan el kernel de host, ¿es correcto suponer que el paquete es procesado por la pila TCP / IP del kernel de host? ¿Si es así, cómo?

Realmente me gustaría leer una explicación detallada (o si conoce un recurso, siéntase libre de vincularla) sobre lo que realmente sucede bajo el capó. Ya leí cuidadosamente this página, pero no dice todo.

Gracias de antemano por su respuesta.