Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So greifen Sie über das externe Netzwerk auf Dienste in Docker zu

So greifen Sie über das externe Netzwerk auf Dienste in Docker zu

PHPz
PHPzOriginal
2023-04-19 14:12:445741Durchsuche

Mit der Popularität und Entwicklung der Containertechnologie hat sich Docker zum Marktführer in der Containerisierungstechnologie und zu einem unverzichtbaren Werkzeug für viele Entwickler sowie Betriebs- und Wartungspersonal entwickelt. In praktischen Anwendungen müssen wir die Dienste in Docker häufig dem externen Netzwerk zugänglich machen, um darauf zugreifen zu können. In diesem Fall müssen wir die Netzwerkkonfiguration und Portzuordnung von Docker verwenden.

1. Docker-Netzwerkkonfiguration

Es gibt vier Arten von Docker-Netzwerken: Bridge-Netzwerk, Host-Netzwerk, kein Netzwerk und benutzerdefiniertes Netzwerk. Wenn wir Docker für die Entwicklung und Bereitstellung von Diensten verwenden, verwenden wir normalerweise benutzerdefinierte Netzwerktypen, mit denen die Kommunikation zwischen Containern besser gesteuert werden kann.

Die benutzerdefinierte Netzwerkkonfiguration von Docker umfasst normalerweise den Netzwerknamen, den Netzwerktreiber, die Subnetz-IP und das Gateway usw. Zu den Netzwerktreibern gehören unter anderem Bridge, Overlay, MacVLAN und andere zur Auswahl. Wenn mehrere Container aufeinander zugreifen müssen, müssen sie sich im selben benutzerdefinierten Netzwerk befinden, damit die Container über Containernamen oder Container-IDs miteinander kommunizieren können.

Als nächstes stellen wir vor, wie man in Docker ein benutzerdefiniertes Netzwerk erstellt und wie man den Service-Container zum angegebenen Netzwerk hinzufügt.

  1. Erstellen Sie ein benutzerdefiniertes Netzwerk

Wir können ein benutzerdefiniertes Netzwerk erstellen, indem wir beim Erstellen des Containers über das Docker-Befehlszeilentool den Netzwerknamen angeben. Der spezifische Befehl lautet:

docker network create --driver bridge <network_name>

wobei <network_name> der Name des Netzwerks ist, das erstellt werden muss. <network_name> 为需要创建的网络名称。

  1. 将容器加入到指定网络中

如果需要将容器加入到指定网络中,可以使用 docker run 命令的 --network 选项。具体命令为:

docker run --name <container_name> --network <network_name> <image_name>

其中,<container_name> 为容器名称,<network_name> 为所需加入的网络名称,<image_name> 为容器镜像名称。

二、Docker 端口映射

Docker 容器中的服务默认仅能在容器内部进行访问,如果需要让外部网络可以通过 IP 地址和端口号访问该服务,则需要进行端口映射。Docker 的端口映射通常有两种方式:静态端口映射和动态端口映射。

  1. 静态端口映射

静态端口映射通常在启动容器时进行设置。我们可以使用代表主机上端口号的 参数和代表容器内端口号的 参数将它们绑定在一起。具体命令为:

docker run -p <host_port>:<container_port> <image_name>

例如,将主机的 8080 端口映射到容器中的 80 端口:

docker run -p 8080:80 nginx

在这种情况下,我们可以通过浏览器访问 http://localhost:8080 来访问容器内的服务。

  1. 动态端口映射

动态端口映射通常是通过自动分配一个主机上未被占用的端口来进行的。我们可以使用 -P 或者 -p 命令选项来开启动态端口映射。具体命令为:

docker run -P <image_name>

或者:

docker run -p <container_port> <image_name>

例如,使用 -P 选项启动一个 Tomcat 容器,Docker 会自动分配一个主机上未被占用的端口进行映射:

docker run -d -P tomcat

在这种情况下,我们可以使用 docker ps -a

    Fügen Sie den Container zum angegebenen Netzwerk hinzu

    Wenn Sie den Container zum angegebenen Netzwerk hinzufügen müssen, können Sie die Option --network des Docker-Ausführungsbefehls verwenden. Der spezifische Befehl lautet:

    rrreee🎜wobei <container_name> der Name des Containers ist, <network_name> der Name des hinzuzufügenden Netzwerks ist, <image_name> ist der Name des Container-Images. 🎜🎜2. Docker-Portzuordnung🎜🎜Auf die Dienste im Docker-Container kann standardmäßig nur innerhalb des Containers zugegriffen werden. Wenn Sie dem externen Netzwerk den Zugriff auf den Dienst über die IP-Adresse und Portnummer ermöglichen müssen, müssen Sie einen Port durchführen Abbildung. Normalerweise gibt es zwei Möglichkeiten der Portzuordnung für Docker: statische Portzuordnung und dynamische Portzuordnung. 🎜🎜🎜Statische Portzuordnung🎜🎜🎜Statische Portzuordnung wird normalerweise beim Starten des Containers festgelegt. Wir können sie mit dem Parameter verbinden, der die Portnummer auf dem Host darstellt, und dem Parameter , der die Portnummer innerhalb des Containers darstellt. Der spezifische Befehl lautet: 🎜rrreee🎜Ordnen Sie beispielsweise den 8080-Port des Hosts dem 80-Port im Container zu: 🎜rrreee🎜In diesem Fall können wir auf http://localhost:8080 zugreifen um auf Dienste innerhalb des Containers zuzugreifen. 🎜
      🎜Dynamische Portzuordnung🎜🎜🎜Dynamische Portzuordnung wird normalerweise durch automatische Zuweisung eines nicht belegten Ports auf dem Host durchgeführt. Wir können die Befehlsoption -P oder -p verwenden, um die dynamische Portzuordnung zu aktivieren. Der spezifische Befehl lautet: 🎜rrreee🎜 oder: 🎜rrreee🎜 Verwenden Sie beispielsweise die Option -P, um einen Tomcat-Container zu starten, und Docker weist automatisch einen freien Port auf dem Host für die Zuordnung zu: 🎜rrreee🎜 In diesem Fall können wir Verwenden Sie den Befehl docker ps -a, um die zugeordnete Portnummer anzuzeigen, und greifen Sie dann über den Browser auf den Dienst zu, um auf die Host-IP-Adresse und die zugewiesene Portnummer zuzugreifen. 🎜🎜3. Fazit🎜🎜Durch Netzwerkkonfiguration und Portzuordnung können wir die Dienste im Docker-Container für den Zugriff auf das externe Netzwerk verfügbar machen. Es ist zu beachten, dass bei der Durchführung der Docker-Netzwerkkonfiguration und Portzuordnung auf die Sicherheit geachtet werden muss, um zu vermeiden, dass Dienste im Container der externen Netzwerkumgebung ausgesetzt werden, wodurch Sicherheitsrisiken vermieden werden. 🎜

Das obige ist der detaillierte Inhalt vonSo greifen Sie über das externe Netzwerk auf Dienste in Docker zu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn