GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Docker-Grundlagen – Offenlegen von Ports, Portbindung und Docker-Link

Dieser Beitrag zeigt drei Methoden zum Verknüpfen von Docker-Containern.

Ports und Portbindung offen legen

Ports verfügbar machen

Diese Methode wird innerhalb desselben Netzwerks oder des Docker-Hosts verwendet. Container im selben Netzwerk können über ihre offengelegten Ports miteinander kommunizieren, und Sie können die Ports mit einer der folgenden Methoden offenlegen.

– Fügen Sie EXPOSE 80 (oder einen beliebigen Port) in Ihre Docker-Datei ein, die Docker mitteilt, dass der Dienst Ihres Containers mit Port 80 verbunden werden kann Docker-Container durch 'run –expose [port number]':

# docker run --expose=[port number] test

Portbindung

Diese Methode wird außerhalb desselben Netzwerks verwendet. Um die Kommunikation über die definierten Ports mit Containern außerhalb desselben Netzwerks zu ermöglichen, müssen Sie die Ports veröffentlichen, indem Sie beim Docker-Lauf das Flag -p verwenden, um einen oder mehrere Ports zu veröffentlichen und zuzuordnen, oder das Flag -P, um alle exponierten Ports und die Zuordnung zu veröffentlichen sie zu höherwertigen Häfen. Sie können die Portierung auf eine der folgenden Arten durchführen:

-Stellen Sie einen Port über Dockerfile durch –expose bereit und mit dem -P veröffentlichen Flagge. Es bindet den exponierten Port an den Docker-Host an einem zufälligen Port.
-Stellen Sie einen Port über Dockerfile durch –expose bereit und veröffentlichen Sie es mit dem -p 21:21 Flag, dies bindet den Expose-Port an den Docker-Host auf bestimmten Port 21 mit Gast 21.
– Binden Sie den Port mit dem Docker-Container-Ausführungsbefehl:

# docker run -p [port number on docker host]:[port number on container]/tcp -p [port number on docker host]:[port number on container]/udp test

Beispiel:

# docker run -p 80:80/tcp -p 500:500/udp test

Unix-Domain-Socket innerhalb eines einzelnen Hosts

Um zwischen Containern innerhalb eines einzelnen Hosts zu kommunizieren, können Sie unter Linux IPC-Mechanismen verwenden, die denselben Socket verwenden. Starten Sie die beiden Docker vom Docker-Host, der ein Volume gemeinsam nutzt, das auf dem Host-Computer erstellt werden soll:

# docker run -d -it --name dvc1 -v /var/tmp:/host oraclelinux:7 /bin/bash
# docker run -d -it --name dvc2 -v /var/tmp:/host oraclelinux:7 /bin/bash

Nach dem obigen Befehl können Container dvc1 und dvc2 Sockets als /var/tmp/SocketX verwenden zur Zusammenschaltung.

Verwenden Sie den Docker-Link-Mechanismus, um einen Link zwischen Containern einzurichten

Docker kann einen Tunnel zwischen zwei Containern erstellen, indem es Umgebungsvariablen verwendet, um Informationen vom übergeordneten Container an den untergeordneten Container zu übergeben. Um einen Link zu erstellen, verwenden Sie den –link Flagge:

# docker run -itd --name=[child container] --link [parent container] [child container image] /bin/bash

Beispiel:
-Überprüfen Sie das Netzwerk des übergeordneten Containers:

# docker ps|grep dvc
7d5ad19de678 j_web:v1 "/bin/sh -c '/usr/bi…" 2 days ago Up 5 hours dvc1
# docker exec -it dvc1 /bin/bash
# ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:04
inet addr:172.17.0.4 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

-Verknüpfen Sie die beiden neuen Container mit dem übergeordneten Container:

# docker run -it --name dvc1_dup1 --rm --link dvc1 j_web:v1 /bin/bash

-Überprüfen Sie den verknüpften Container:

# docker inspect -f "{{ .HostConfig.Links }}" dvc1_dup1
[/dvc1:/dvc1_dup1/dvc1]

-Überprüfen Sie die Hostdatei des neuen Containers, sie enthält die Informationen des übergeordneten Containers:

# docker exec -it dvc1_dup1 /bin/bash
[root@b56d465976bc /]# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.4 dvc1 7d5ad19de678
172.17.0.5 b56d465976bc
[root@b56d465976bc /]#
Warnung :Das Flag –link ist eine Legacy-Funktion von Docker. Es kann schließlich entfernt werden. Sofern Sie es nicht unbedingt weiter verwenden müssen, empfehlen wir Ihnen, benutzerdefinierte Netzwerke zu verwenden, um die Kommunikation zwischen zwei Containern zu erleichtern, anstatt –link zu verwenden. Eine Funktion, die von benutzerdefinierten Netzwerken nicht unterstützt wird und die Sie mit –link tun können, ist die gemeinsame Nutzung von Umgebungsvariablen zwischen Containern. Sie können jedoch andere Mechanismen wie Volumes verwenden, um Umgebungsvariablen kontrollierter zwischen Containern auszutauschen.


Docker
  1. So exportieren und importieren Sie Docker-Container

  2. Unterschied zwischen Podman und Docker.

  3. Was ist Docker (und Linux-Container?)

  4. Wann und warum Docker verwendet werden sollte

  5. Verhindern, dass andere Anwendungen an Port 80 und 443 binden

So installieren und verwenden Sie Docker unter Ubuntu 22.04

So bereinigen und löschen Sie Docker-Images

So zeigen oder veröffentlichen Sie den Docker-Port

Öffnen eines Ports unter Linux

.NET Core und Docker

.NET und Docker