Die --net=host
Option wird verwendet, um die Programme im Docker-Container aus Sicht des Netzwerks so aussehen zu lassen, als würden sie auf dem Host selbst ausgeführt. Dies ermöglicht dem Container einen größeren Netzwerkzugriff als normalerweise möglich.
Normalerweise müssen Sie Ports vom Host-Computer in einen Container weiterleiten. Wenn sich die Container jedoch das Netzwerk des Hosts teilen, erfolgt jede Netzwerkaktivität direkt auf dem Host-Computer - genau wie wenn das Programm lokal auf dem Host statt in einem ausgeführt würde Container.
Dies bedeutet zwar, dass Sie keine Ports mehr verfügbar machen und sie Container-Ports zuordnen müssen, aber Sie müssen Ihre Docker-Dateien bearbeiten, um die Ports anzupassen, die jeder Container abhört, um Konflikte zu vermeiden, da nicht zwei Container gleichzeitig ausgeführt werden können Host-Port. Der eigentliche Grund für diese Option ist jedoch die Ausführung von Apps, die einen Netzwerkzugriff benötigen, der nur schwer an einen Container auf Portebene weitergeleitet werden kann.
Wenn Sie beispielsweise einen DHCP-Server ausführen möchten, müssen Sie in der Lage sein, den Broadcast-Verkehr im Netzwerk abzuhören und die MAC-Adresse aus dem Paket zu extrahieren. Diese Informationen gehen während des Portweiterleitungsprozesses verloren. Die einzige Möglichkeit, einen DHCP-Server in Docker auszuführen, besteht darin, den Container als auszuführen --net=host
.
Im Allgemeinen wird --net=host
es nur benötigt, wenn Sie Programme mit sehr spezifischen, ungewöhnlichen Netzwerkanforderungen ausführen.
Aus Sicherheitsgründen können Docker-Container viele Ports überwachen, obwohl sie nur einen einzelnen Port ankündigen (verfügbar machen). Normalerweise ist dies in Ordnung, da Sie nur den einzelnen erwarteten Port weiterleiten. Wenn Sie jedoch diesen verwenden --net=host
, werden alle Ports des Containers auf dem Host überwacht, auch diejenigen, die nicht in der Docker-Datei aufgeführt sind. Dies bedeutet, dass Sie den Container genau prüfen müssen (insbesondere, wenn er nicht Ihnen gehört, z. B. einem offiziellen, der von einem Softwareprojekt bereitgestellt wird), um sicherzustellen, dass Sie nicht versehentlich zusätzliche Dienste auf dem Computer verfügbar machen.
--net=host
in eine Docker-Datei einzufügen?