Funktioniert ein docker-container haben Ihren eigenen TCP/IP stack?

Ich versuche zu verstehen, was hinter den kulissen passiert, um ein Netzwerk-Paket aus dem Draht, der mit der hostmaschine verbunden und gerichtet, um eine Anwendung innerhalb eines Docker-container.

Wenn es ein classic VM, ich weiß, dass ein Paket bei der Ankunft auf dem host übertragen werden, indem der hypervisor (z.B. VMware, VBox etc.) die virtuelle Netzwerkkarte der VM und von dort aus über die TCP/IP-stack des Gast-OS, und schließlich erreichen die Anwendung.

Im Fall von Docker, ich weiß, dass ein Paket kommt auf dem host-Rechner weitergeleitet wird, die von der Netzwerk-Schnittstelle des Hosts, der die docker0 Brücke, die verbunden ist mit einem veth paar enden auf der virtuellen Schnittstelle eth0 im inneren des Behälters. Aber danach? Da alle Docker-Container verwenden Sie den host-kernel, ist es richtig, davon auszugehen, dass das Paket verarbeitet wird, wird die TCP/IP-stack des host-Kernels? Wenn ja, wie?

Ich würde wirklich gerne gelesen detaillierte Erklärung (oder, wenn Sie wissen eine Ressource, fühlen Sie sich frei zu verbinden) über das, was wirklich passiert unter der Haube. Ich habe schon sorgfältig gelesen diese Seite, es muss aber nicht alles sagen.

Vielen Dank im Voraus für Ihre Antwort.

  • Ja, die host-TCP/IP-stack verwendet wird. Nach dem Lesen der Seite, die du verlinkt sind, ist es schwer zu viel hinzufügen, ausser das Lesen der linux-kernel-und Andockfenster-source-code - haben Sie bestimmte Fragen eher ?
  • Vielen Dank für Ihren Kommentar. Also, zum Beispiel, ist es mir unklar, wie die Daten übertragen werden, bilden die docker0 Brücke zu den eth0 von der host-Maschine: ich habe versucht, verwenden Sie wireshark, aber ich sehe nur Pakete ausgetauscht docker0 und die vethXYZ; ich gehe auch davon aus, dass zwischen docker0 und eth0 es ist ein NAT-seit-Adressen ändern, aber bisher fand ich keine Dokumentation darüber.
  • Richtig, die meisten, einschließlich der NAT-Regeln beschäftigt, die von docker erklärt in diesem Dokument.
  • Mein Fehler, ich übersprang den Absatz "Verbindliche container-ports für den host", weil der Titel; sorry für Ihre Zeit verschwenden. Ich würde vorschlagen, Sie zu konvertieren dein Erster Kommentar in eine Antwort, denn Sie antwortete über die TCP/IP-stack, ich würde es akzeptieren gerne 🙂
Schreibe einen Kommentar