Docker virtualisiert eine Brücke auf dem Host-Rechner. Beim Erstellen und Starten eines Containers wird jedem Container standardmäßig eine IP-Adresse zugewiesen, die mit dem Netzwerksegment der Brücke übereinstimmt. Die Brücke dient als Gateway des Containers. Die Brücke ist mit jedem Container verbunden und Container können über die Brücke kommunizieren. Da die Brücke virtualisiert ist, kann das externe Netzwerk nicht angesprochen werden, d. h. das externe Netzwerk kann standardmäßig nicht auf den Container zugreifen. Beim Erstellen und Starten des Containers muss der Host-Port dem Container-Port zugeordnet werden, und der Zugriff auf den Container erfolgt über den Host-IP-Port. Dies ist das Standardnetzwerk für Docker. Einer seiner Nachteile ist, dass Container nur über IP aufeinander zugreifen können. Wenn Sie über den Containernamen oder die Container-ID aufeinander zugreifen möchten, müssen Sie beim Erstellen und Starten des Containers die Hosts-Datei mithilfe des Links ändern. Im Allgemeinen wird ein benutzerdefiniertes Netzwerk verwendet. Ein benutzerdefiniertes Netzwerk wird mithilfe des Netzwerks erstellt. Beim Erstellen eines benutzerdefinierten Netzwerks können Sie Informationen wie das Subnetzsegment und das Gateway angeben. Geben Sie beim Erstellen und Starten eines Containers das zu verwendende Netzwerk an. Auf diese Weise können alle Container in einem eigenen Netzwerk direkt über den Containernamen angesprochen werden. Möchte ein Container auf Container in anderen Netzwerken zugreifen, kann dies im Netzwerk ebenfalls so eingestellt werden, dass der Container und der Container im Zielnetzwerk über den Containernamen kommunizieren können. 1 Standardnetzwerk Docker0Getestet mit VM-VM, Docker wird nicht gestartet. Es gibt zwei Netzwerke im System (Loopback-Netzwerk und virtuelles Maschinennetzwerk) Wenn der Docker-Dienst gestartet wird, verfügt der Host über ein zusätzliches Netzwerk Docker0, das das Standardnetzwerk von Docker ist # Starten Sie den Docker-Dienst [root@localhost ~]# systemctl start docker Starten Sie einen Tomcat-Container und Sie werden feststellen, dass der Host über ein zusätzliches Netzwerk verfügt. Starten Sie Tomcat [root@localhost ~]# docker run -d -P --name tomcat1 tomcat Durch das Starten eines weiteren Tomcats wird dem Hostcomputer ein weiteres Netzwerk hinzugefügt # Tomcat starten [root@localhost ~]# docker run -d -P --name tomcat2 tomcat Testen Sie, ob die beiden Tomcat-Netzwerk-IPs verbunden sind # Zeigen Sie die IP-Adresse von Tomcat an [root@localhost ~]# docker exec -it tomcat2 ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue Status UNBEKANNT Gruppe Standard qlen 1000 Link/Loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 Bereich Host lo valid_lft für immer preferred_lft für immer 9: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue status UP-Gruppenstandard link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.3/16 brd 172.17.255.255 Bereich global eth0 valid_lft für immer preferred_lft für immer # Pingen Sie die IP-Adresse von Tomcat2 von Tomcat1 aus [root@localhost ~]# docker exec -it tomcat1 ping 172.17.0.3 PING 172.17.0.3 (172.17.0.3) 56(84) Bytes Daten. 64 Bytes von 172.17.0.3: icmp_seq=1 ttl=64 Zeit=0,146 ms 64 Bytes von 172.17.0.3: icmp_seq=2 ttl=64 Zeit=0,067 ms 64 Bytes von 172.17.0.3: icmp_seq=3 ttl=64 Zeit=0,088 ms ^C --- 172.17.0.3 Ping-Statistiken --- 3 Pakete gesendet, 3 empfangen, 0 % Paketverlust, Zeit 5 ms RTT min./avg./max./mdev. = 0,067/0,100/0,146/0,034 ms Das Pingen des Containernamens von Tomcat2 in Tomcat1 schlägt fehl # Ping den Containernamen von Tomcat2 in Tomcat1 [root@localhost ~]# docker exec -it tomcat1 ping tomcat2 ^C[root@localhost ~]# Stoppen Sie Tomcat1, erstellen und starten Sie Tomcat neu. Verwenden Sie den Link, um die Hosts-Datei von Tomcat1 auf der untersten Ebene zu ändern, damit der Containername als IP-Domänenname erkannt wird, sodass Tomcat1 Tomcat2 in eine Richtung anpingen kann. # Löschen Sie tomcat1 [root@localhost ~]# docker rm -f tomcat1 Tomcat1 # Zeigen Sie den Hilfedokumentationslink zur Verwendung von run [root@localhost ~] an. # docker run --help Verwendung: docker run [OPTIONEN] IMAGE [BEFEHL] [ARG…] Ausführen eines Befehls in einem neuen Container Optionen: --add-host list Fügt eine benutzerdefinierte Host-zu-IP-Zuordnung hinzu (Host:IP) -a, --attach list An STDIN, STDOUT oder STDERR anhängen --blkio-weight uint16 Block-E/A (relatives Gewicht), zwischen 10 und 1000 oder 0 zum Deaktivieren (Standard 0) --blkio-weight-device list Block-IO-Gewicht (relatives Gerätegewicht) (Standard []) --cap-add list Linux-Funktionen hinzufügen --cap-drop list Linux-Fähigkeiten löschen --cgroup-parent string Optionale übergeordnete Kontrollgruppe für den Container --cgroupns string Zu verwendender Cgroup-Namespace (Host|privat) 'Host': Führen Sie den Container im Cgroup-Namespace des Docker-Hosts aus. „privat“: Führen Sie den Container in seinem eigenen privaten Cgroup-Namespace aus '': Verwenden Sie den cgroup-Namespace wie vom Option „default-cgroupns-mode“ im Daemon (Standard) --cidfile string Schreibt die Container-ID in die Datei --cpu-period int Begrenzt die CPU-CFS-Periode (Completely Fair Scheduler) --cpu-quota int Begrenzt die CPU-Quote des CFS (Completely Fair Scheduler) --cpu-rt-perioden int Begrenzt die CPU-Echtzeitperiode in Mikrosekunden --cpu-rt-runtime int Begrenzt die CPU-Echtzeitlaufzeit in Mikrosekunden -c, --cpu-shares int CPU-Anteile (relatives Gewicht) --cpus decimal Anzahl der CPUs --cpuset-cpus Zeichenfolge CPUs, in denen die Ausführung zulässig ist (0-3, 0,1) --cpuset-mems Zeichenfolge MEMs, in denen die Ausführung zulässig ist (0-3, 0,1) -d, --detach Container im Hintergrund ausführen und Container-ID drucken --detach-keys string Überschreibt die Tastenfolge zum Abtrennen eines Containers --device list Fügt dem Container ein Hostgerät hinzu --device-cgroup-rule list Fügt der Liste der in der Kontrollgruppe zulässigen Geräte eine Regel hinzu --device-read-bps list Leserate (Bytes pro Sekunde) von einem Gerät begrenzen (Standard []) --device-read-iops list Leserate (IO pro Sekunde) von einem Gerät begrenzen (Standard []) --device-write-bps list Schreibrate (Bytes pro Sekunde) für ein Gerät begrenzen (Standard []) --device-write-iops list Schreibrate (IO pro Sekunde) für ein Gerät begrenzen (Standard []) --disable-content-trust Bildüberprüfung überspringen (Standard: true) --dns list Benutzerdefinierte DNS-Server festlegen --dns-option list DNS-Optionen festlegen --dns-search list Benutzerdefinierte DNS-Suchdomänen festlegen --domainname string Container-NIS-Domänenname --entrypoint string Überschreibt den Standard-ENTRYPOINT des Bildes -e, --env list Umgebungsvariablen festlegen --env-file list Eine Datei mit Umgebungsvariablen einlesen --expose list Einen Port oder einen Portbereich offen legen --gpus gpu-request GPU-Geräte, die dem Container hinzugefügt werden sollen („all“, um alle GPUs zu übergeben) --group-add list Zusätzliche Gruppen zum Beitritt hinzufügen --health-cmd string Auszuführender Befehl zur Überprüfung des Zustands --health-interval Dauer zwischen den Ausführungen der Prüfungen (ms|s|m|h) (Standard: 0 s) --health-retries int Anzahl aufeinanderfolgender Fehler, die erforderlich sind, um einen Fehler zu melden --health-start-periodendauer Startzeitraum für die Initialisierung des Containers vor dem Start des Countdowns für Health-Retries (ms|s|m|h) (Standard 0 s) --health-timeout Dauer Maximale Zeit, die für die Ausführung einer Prüfung benötigt wird (ms|s|m|h) (Standard: 0 s) --help Druckverwendung -h, --hostname Zeichenfolge Container-Hostname --init Führt einen Init innerhalb des Containers aus, der Signale weiterleitet und Prozesse erntet -i, --interactive STDIN geöffnet halten, auch wenn keine Verbindung besteht --ip Zeichenfolge IPv4-Adresse (z. B. 172.30.100.104) --ip6 Zeichenfolge IPv6-Adresse (z. B. 2001:db8::33) --ipc Zeichenfolge Zu verwendender IPC-Modus --isolation string Container-Isolationstechnologie --kernel-memory bytes Kernel-Speicherlimit -l, --label list Metadaten für einen Container festlegen --label-file list Liest eine zeilenweise getrennte Datei mit Etiketten ein. --link list Link zu einem anderen Container hinzufügen --link-local-ip list Link-Local-Adressen von Container-IPv4/IPv6 --log-driver string Protokollierungstreiber für den Container --log-opt list Protokolltreiberoptionen --mac-address string Container-MAC-Adresse (z. B. 92:d0:c6:0a:29:33) -m, --memory bytes Speicherlimit --memory-reservation bytes Weiche Speichergrenze --memory-swap bytes Swap-Limit gleich Speicher plus Swap: „-1“ um unbegrenzten Swap zu aktivieren --memory-swappiness int Speicherauslagerung des Containers optimieren (0 bis 100) (Standard: -1) --mount mount Eine Dateisystemeinbindung an den Container anhängen --name string Dem Container einen Namen zuweisen --network network Einen Container mit einem Netzwerk verbinden --network-alias list Netzwerk-Aliassen für den Container hinzufügen --no-healthcheck Deaktiviert alle vom Container angegebenen HEALTHCHECK --oom-kill-disable OOM-Killer deaktivieren --oom-score-adj int OOM-Einstellungen des Hosts anpassen (-1000 bis 1000) --pid string Zu verwendender PID-Namespace --pids-limit int PID-Limit für Container optimieren (auf -1 setzen für unbegrenzt) --platform string Plattform festlegen, wenn der Server mehrere Plattformen unterstützt --privileged Erteilt diesem Container erweiterte Privilegien -p, --publish list Port(s) eines Containers auf dem Host veröffentlichen -P, --publish-all Alle freigegebenen Ports auf zufällig ausgewählten Ports veröffentlichen --pull string Bild vor dem Ausführen abrufen ("immer"|"fehlt"|"nie") (Standard "fehlt") --read-only Mountet das Root-Dateisystem des Containers schreibgeschützt --restart string Neustartrichtlinie, die angewendet werden soll, wenn ein Container beendet wird (Standard: „nein“) --rm Container automatisch entfernen, wenn er beendet wird --runtime string Für diesen Container zu verwendende Laufzeit --security-opt list Sicherheitsoptionen --shm-size bytes Größe von /dev/shm --sig-proxy Proxy empfängt Signale an den Prozess (Standard: true) --stop-signal Zeichenfolge Signal zum Stoppen eines Containers (Standard „SIGTERM“) --stop-timeout int Timeout (in Sekunden) zum Stoppen eines Containers --storage-opt listet Speichertreiberoptionen für den Container auf. --sysctl map Sysctl-Optionen (Standard map[]) --tmpfs list Mountet ein tmpfs-Verzeichnis -t, --tty Ein Pseudo-TTY zuweisen --ulimit ulimit Ulimit-Optionen (Standard []) -u, --user string Benutzername oder UID (Format: <name|uid>[:<group|gid>]) --userns string Zu verwendender Benutzer-Namespace --uts Zeichenfolge Zu verwendender UTS-Namespace -v, --volume list Ein Volume per Bind mounten --volume-driver string Optionaler Volume-Treiber für den Container --volumes-from list Volumes aus den angegebenen Containern mounten -w, --workdir string Arbeitsverzeichnis innerhalb des Containers # Starten Sie den Tomcat1-Link, um den Containernamen anzugeben, auf den zugegriffen werden soll [root@localhost ~]# docker run -d -P --name tomcat1 --link tomcat2 tomcat f78c51961662a1d3558fc8d0d95906b902a7a042f251a60858e72bcfa62e7a08 # Ping testen [root@localhost ~]# docker exec -it tomcat1 ping tomcat2 PING tomcat2 (172.17.0.3) 56(84) Bytes Daten. 64 Bytes von Tomcat2 (172.17.0.3): icmp_seq=1 ttl=64 Zeit=0,088 ms 64 Bytes von Tomcat2 (172.17.0.3): icmp_seq=2 ttl=64 Zeit=0,071 ms 64 Bytes von Tomcat2 (172.17.0.3): icmp_seq=3 ttl=64 Zeit=0,071 ms ^C --- Tomcat2-Ping-Statistiken --- 3 Pakete gesendet, 3 empfangen, 0 % Paketverlust, Zeit 1000 ms RTT min./avg./max./mdev. = 0,071/0,076/0,088/0,012 ms # Überprüfen Sie, ob die Hosts von Tomcat1 zum Domänennamen von Tomcat2 hinzugefügt wurden [root@localhost ~]# docker exec -it tomcat1 cat /etc/hosts 127.0.0.1 lokaler Host ::1 lokaler Host ip6-lokaler Host ip6-Loopback fe00::0 ip6-lokales Netz ff00::0 ip6-mcastprefix ff02::1 ip6-alle Knoten ff02::2 ip6-allerouter 172.17.0.3 tomcat2 27766c324de6 172.17.0.2 f78c51961662 # tomcat2 kann tomcat1 nicht anpingen [root@localhost ~]# docker exec -it tomcat2 ping tomcat1 ^C[root@localhost ~]# 2 Benutzerdefiniertes NetzwerkSie müssen den Netzwerkbefehl verwenden # Hilfedokumentation anzeigen [root@localhost ~]# docker network --help Verwendung: Docker-Netzwerk-Befehl Netzwerke verwalten Befehle: Verbinden Einen Container mit einem Netzwerk verbinden erstellen Erstellen Sie ein Netzwerk trennen Einen Container von einem Netzwerk trennen inspect Detaillierte Informationen zu einem oder mehreren Netzwerken anzeigen ls Netzwerke auflisten prune Alle ungenutzten Netzwerke entfernen rm Entfernen Sie ein oder mehrere Netzwerke Führen Sie „docker network COMMAND --help“ aus, um weitere Informationen zu einem Befehl zu erhalten. Listet die aktuelle Docker-Netzwerkbrücke als Standardnetzwerk docker0 auf [root@localhost ~]# Docker-Netzwerk ls NETZWERK-ID-NAME TREIBER-UMFANG 9b27ff0926bf Brücke Brücke lokal 8dfa2efae677 Host Host lokal 2025b7fb1d7c keine null lokal Erstellen Sie ein Netzwerk mynet [root@localhost ~]# Docker-Netzwerk erstellen --Hilfe Verwendung: Docker-Netzwerk erstellen [OPTIONEN] NETZWERK Erstellen Sie ein Netzwerk Optionen: --attachable Manuelles Anhängen von Containern aktivieren --aux-address map Vom Netzwerktreiber verwendete zusätzliche IPv4- oder IPv6-Adressen (Standardmap[]) --config-from string Das Netzwerk, aus dem die Konfiguration kopiert werden soll --config-only Ein reines Konfigurationsnetzwerk erstellen -d, --driver string Treiber zur Verwaltung des Netzwerks (Standard „Bridge“) --gateway strings IPv4- oder IPv6-Gateway für das Master-Subnetz --ingress Swarm-Routing-Mesh-Netzwerk erstellen --internal Beschränken Sie den externen Zugriff auf das Netzwerk --ip-range strings Container-IP aus einem Unterbereich zuweisen --ipam-driver string IP-Adressverwaltungstreiber (Standard „default“) --ipam-opt map IPAM-Treiberspezifische Optionen festlegen (Standard map[]) --ipv6 IPv6-Netzwerk aktivieren --label list Metadaten in einem Netzwerk festlegen -o, --opt map Treiberspezifische Optionen setzen (Standard map[]) --scope string Kontrolliert den Umfang des Netzwerks --subnet strings Subnetz im CIDR-Format, das ein Netzwerksegment darstellt [root@localhost ~]# Docker-Netzwerk erstellen --Treiberbrücke --Subnetz 192.168.0.0/16 --Gateway 192.168.0.1 mynet 1abaa8e6a387bc8bbc7ac50d9f2289e96a143a92f074e90f698bd70411c86672 [root@localhost ~]# Docker-Netzwerk inspizieren Mynet [ { "Name": "mynet", "ID": "1abaa8e6a387bc8bbc7ac50d9f2289e96a143a92f074e90f698bd70411c86672", "Erstellt": "2021-05-13T11:21:13.494039122+08:00", "Geltungsbereich": "lokal", "Treiber": "Brücke", "EnableIPv6": false, "IPAM": { "Treiber": "Standard", "Optionen": {}, "Konfiguration": [ { "Subnetz": "192.168.0.0/16", "Gateway": "192.168.0.1" } ] }, "Intern": false, "Anfügbar": false, "Ingress": falsch, "Konfiguration von": { "Netzwerk": "" }, "ConfigOnly": falsch, "Container": {}, "Optionen": {}, "Beschriftungen": {} } ] Verwenden Sie mynet, um zwei Tomcats zu erstellen und zu starten, und sie können sich gegenseitig direkt über den Containernamen anpingen. [root@localhost ~]# docker run --help Verwendung: docker run [OPTIONEN] IMAGE [BEFEHL] [ARG…] Ausführen eines Befehls in einem neuen Container Optionen: --add-host list Fügt eine benutzerdefinierte Host-zu-IP-Zuordnung hinzu (Host:IP) -a, --attach list An STDIN, STDOUT oder STDERR anhängen --blkio-weight uint16 Block-E/A (relatives Gewicht), zwischen 10 und 1000 oder 0 zum Deaktivieren (Standard 0) --blkio-weight-device list Block-IO-Gewicht (relatives Gerätegewicht) (Standard []) --cap-add list Linux-Funktionen hinzufügen --cap-drop list Linux-Fähigkeiten löschen --cgroup-parent string Optionale übergeordnete Kontrollgruppe für den Container --cgroupns string Zu verwendender Cgroup-Namespace (Host|privat) 'Host': Führen Sie den Container im Cgroup-Namespace des Docker-Hosts aus. „privat“: Führen Sie den Container in seinem eigenen privaten Cgroup-Namespace aus '': Verwenden Sie den cgroup-Namespace wie vom Option „default-cgroupns-mode“ im Daemon (Standard) --cidfile string Schreibt die Container-ID in die Datei --cpu-period int Begrenzt die CPU-CFS-Periode (Completely Fair Scheduler) --cpu-quota int CPU-CFS-Kontingent (Completely Fair Scheduler) begrenzen --cpu-rt-perioden int Begrenzt die CPU-Echtzeitperiode in Mikrosekunden --cpu-rt-runtime int Begrenzt die CPU-Echtzeitlaufzeit in Mikrosekunden -c, --cpu-shares int CPU-Anteile (relatives Gewicht) --cpus decimal Anzahl der CPUs --cpuset-cpus Zeichenfolge CPUs, in denen die Ausführung zulässig ist (0-3, 0,1) --cpuset-mems Zeichenfolge MEMs, in denen die Ausführung zulässig ist (0-3, 0,1) -d, --detach Container im Hintergrund ausführen und Container-ID drucken --detach-keys string Überschreibt die Tastenfolge zum Abtrennen eines Containers --device list Fügt dem Container ein Hostgerät hinzu --device-cgroup-rule list Fügt der Liste der in der Kontrollgruppe zulässigen Geräte eine Regel hinzu --device-read-bps list Leserate (Bytes pro Sekunde) von einem Gerät begrenzen (Standard []) --device-read-iops list Leserate (IO pro Sekunde) von einem Gerät begrenzen (Standard []) --device-write-bps list Schreibrate (Bytes pro Sekunde) für ein Gerät begrenzen (Standard []) --device-write-iops list Schreibrate (IO pro Sekunde) für ein Gerät begrenzen (Standard []) --disable-content-trust Bildüberprüfung überspringen (Standard: „true“) --dns list Benutzerdefinierte DNS-Server festlegen --dns-option list DNS-Optionen festlegen --dns-search list Benutzerdefinierte DNS-Suchdomänen festlegen --domainname string Container-NIS-Domänenname --entrypoint string Überschreibt den Standard-ENTRYPOINT des Bildes -e, --env list Umgebungsvariablen festlegen --env-file list Eine Datei mit Umgebungsvariablen einlesen --expose list Einen Port oder einen Portbereich offen legen --gpus gpu-request GPU-Geräte, die dem Container hinzugefügt werden sollen („all“, um alle GPUs zu übergeben) --group-add list Zusätzliche Gruppen zum Beitritt hinzufügen --health-cmd string Auszuführender Befehl zur Überprüfung des Zustands --health-interval Dauer zwischen den Ausführungen der Prüfungen (ms|s|m|h) (Standard: 0 s) --health-retries int Anzahl aufeinanderfolgender Fehler, die erforderlich sind, um einen Fehler zu melden --health-start-periodendauer Startzeitraum für die Initialisierung des Containers vor dem Start des Countdowns für Health-Retries (ms|s|m|h) (Standard 0 s) --health-timeout Dauer Maximale Zeit, die für die Ausführung einer Prüfung benötigt wird (ms|s|m|h) (Standard: 0 s) --help Druckverwendung -h, --hostname Zeichenfolge Container-Hostname --init Führt einen Init innerhalb des Containers aus, der Signale weiterleitet und Prozesse erntet -i, --interactive STDIN geöffnet halten, auch wenn keine Verbindung besteht --ip Zeichenfolge IPv4-Adresse (z. B. 172.30.100.104) --ip6 Zeichenfolge IPv6-Adresse (z. B. 2001:db8::33) --ipc Zeichenfolge Zu verwendender IPC-Modus --isolation string Container-Isolationstechnologie --kernel-memory bytes Kernel-Speicherlimit -l, --label list Metadaten für einen Container festlegen --label-file list Liest eine zeilenweise getrennte Datei mit Etiketten ein. --link list Link zu einem anderen Container hinzufügen --link-local-ip list Link-Local-Adressen von Containern für IPv4/IPv6 --log-driver string Protokollierungstreiber für den Container --log-opt list Protokolltreiberoptionen --mac-address string Container-MAC-Adresse (z. B. 92:d0:c6:0a:29:33) -m, --memory bytes Speicherlimit --memory-reservation bytes Weiche Speichergrenze --memory-swap bytes Swap-Limit gleich Speicher plus Swap: „-1“ um unbegrenzten Swap zu aktivieren --memory-swappiness int Speicherauslagerung des Containers optimieren (0 bis 100) (Standard: -1) --mount mount Eine Dateisystemeinbindung an den Container anhängen --name string Dem Container einen Namen zuweisen --network network Einen Container mit einem Netzwerk verbinden --network-alias list Netzwerk-Aliassen für den Container hinzufügen --no-healthcheck Deaktiviert alle vom Container angegebenen HEALTHCHECK --oom-kill-disable OOM-Killer deaktivieren --oom-score-adj int OOM-Einstellungen des Hosts anpassen (-1000 bis 1000) --pid string Zu verwendender PID-Namespace --pids-limit int PID-Limit für Container optimieren (auf -1 setzen für unbegrenzt) --platform string Plattform festlegen, wenn der Server mehrere Plattformen unterstützt --privileged Erteilt diesem Container erweiterte Privilegien -p, --publish list Port(s) eines Containers auf dem Host veröffentlichen -P, --publish-all Alle freigegebenen Ports auf zufällig ausgewählten Ports veröffentlichen --pull string Bild vor dem Ausführen abrufen ("immer"|"fehlt"|"nie") (Standard "fehlt") --read-only Mountet das Root-Dateisystem des Containers schreibgeschützt --restart string Neustartrichtlinie, die angewendet werden soll, wenn ein Container beendet wird (Standard: „nein“) --rm Container automatisch entfernen, wenn er beendet wird --runtime string Für diesen Container zu verwendende Laufzeit --security-opt list Sicherheitsoptionen --shm-size bytes Größe von /dev/shm --sig-proxy Proxy empfängt Signale an den Prozess (Standard: true) --stop-signal Zeichenfolge Signal zum Stoppen eines Containers (Standard „SIGTERM“) --stop-timeout int Timeout (in Sekunden) zum Stoppen eines Containers --storage-opt listet Speichertreiberoptionen für den Container auf. --sysctl map Sysctl-Optionen (Standard map[]) --tmpfs list Mountet ein tmpfs-Verzeichnis -t, --tty Ein Pseudo-TTY zuweisen --ulimit ulimit Ulimit-Optionen (Standard []) -u, --user string Benutzername oder UID (Format: <name|uid>[:<group|gid>]) --userns string Zu verwendender Benutzer-Namespace --uts Zeichenfolge Zu verwendender UTS-Namespace -v, --volume list Ein Volume per Bind mounten --volume-driver string Optionaler Volume-Treiber für den Container --volumes-from list Volumes aus den angegebenen Containern mounten -w, --workdir string Arbeitsverzeichnis innerhalb des Containers [root@localhost ~]# docker run -d -P --name tomcat-n-1 --network mynet tomcat 404e4e63622b207af2ed534e768996f4d1cba4c798bba9e5d9b33c42711eaa4a [root@localhost ~]# docker run -d -P --name tomcat-n-2 --network mynet tomcat f6352fb3db01beed6ddf17ef84999a4ab209f026a6137b3bc7e35335d434785f [root@localhost ~]# docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN f6352fb3db01 Tomcat „catalina.sh run“ vor 3 Sekunden. 2 Sekunden aktiv. 0.0.0.0:49159->8080/tcp, :::49159->8080/tcp Tomcat-n-2 404e4e63622b Tomcat „catalina.sh run“ vor 10 Sekunden. Aktiv seit 9 Sekunden. 0.0.0.0:49158->8080/tcp, :::49158->8080/tcp Tomcat-n-1 f78c51961662 Tomcat „catalina.sh run“ vor 15 Minuten Aktiv 15 Minuten 0.0.0.0:49157->8080/tcp, :::49157->8080/tcp Tomcat1 27766c324de6 Tomcat „catalina.sh run“ vor 16 Minuten Aktiv 16 Minuten 0.0.0.0:49156->8080/tcp, :::49156->8080/tcp Tomcat2 [root@localhost ~]# docker exec -it tomcat-n-1 ping tomcat-n-2 PING Tomcat-n-2 (192.168.0.3) 56(84) Bytes Daten. 64 Bytes von tomcat-n-2.mynet (192.168.0.3): icmp_seq=1 ttl=64 Zeit=0,102 ms 64 Bytes von tomcat-n-2.mynet (192.168.0.3): icmp_seq=2 ttl=64 Zeit=0,069 ms 64 Bytes von tomcat-n-2.mynet (192.168.0.3): icmp_seq=3 ttl=64 Zeit=0,164 ms ^C --- Tomcat-N-2-Ping-Statistiken --- 3 Pakete gesendet, 3 empfangen, 0 % Paketverlust, Zeit 3 ms RTT min./avg./max./mdev. = 0,069/0,111/0,164/0,041 ms Zeigen Sie die detaillierten Informationen des Mynet-Netzwerks an, einschließlich der Netzwerkinformationen der beiden gestarteten Tomcat-Container [root@localhost ~]# Docker-Netzwerk inspizieren Mynet [ { "Name": "mynet", "ID": "1abaa8e6a387bc8bbc7ac50d9f2289e96a143a92f074e90f698bd70411c86672", "Erstellt": "2021-05-13T11:21:13.494039122+08:00", "Geltungsbereich": "lokal", "Treiber": "Brücke", "EnableIPv6": false, "IPAM": { "Treiber": "Standard", "Optionen": {}, "Konfiguration": [ { "Subnetz": "192.168.0.0/16", "Gateway": "192.168.0.1" } ] }, "Intern": false, "Anfügbar": false, "Ingress": falsch, "Konfiguration von": { "Netzwerk": "" }, "ConfigOnly": falsch, "Container": { "404e4e63622b207af2ed534e768996f4d1cba4c798bba9e5d9b33c42711eaa4a": { "Name": "tomcat-n-1", "EndpointID": "b9efbd78daabe9345ade2a2e55291b7646d01679516e2f0be1efd5c2d6fea6b8", "MacAdresse": "02:42:c0:a8:00:02", "IPv4Adresse": "192.168.0.2/16", "IPv6Adresse": "" }, "f6352fb3db01beed6ddf17ef84999a4ab209f026a6137b3bc7e35335d434785f": { "Name": "tomcat-n-2", "EndpointID": "6b05a1ceff43514305bf3d0adf9e30ba8007db5ec8349d47f96ff2b216912fc0", "MacAdresse": "02:42:c0:a8:00:03", "IPv4Adresse": "192.168.0.3/16", "IPv6Adresse": "" } }, "Optionen": {}, "Beschriftungen": {} } ] Starten Sie einen Tomcat3 mit dem Standardnetzwerk Docker0 [root@localhost ~]# docker run -d -P --name tomcat3 tomcat 90e94ac30a3c61b493d2ea38c32cf5dddb781e88c30547b609db765b15d7d1e0 [root@localhost ~]# Docker-Netzwerk ls NETZWERK-ID-NAME TREIBER-UMFANG 9b27ff0926bf Brücke Brücke lokal 8dfa2efae677 Host Host lokal 1abaa8e6a387 Mynet-Brücke lokal 2025b7fb1d7c keine null lokal # Detaillierte Informationen zu Docker0 anzeigen Tomcat3 wird im Standardnetzwerk angezeigt [root@localhost ~]# Docker Network Inspection 9b27ff0926bf [ { "Name": "Brücke", "ID": "9b27ff0926bf22d0828ccd07d6e14eb17d96a4989f9def6f9118c099cf1ca1c6", "Erstellt": "2021-05-13T10:51:20.244232273+08:00", "Geltungsbereich": "lokal", "Treiber": "Brücke", "EnableIPv6": false, "IPAM": { "Treiber": "Standard", "Optionen": null, "Konfiguration": [ { "Subnetz": "172.17.0.0/16", "Gateway": "172.17.0.1" } ] }, "Intern": false, "Anfügbar": false, "Ingress": falsch, "Konfiguration von": { "Netzwerk": "" }, "ConfigOnly": falsch, "Container": { "27766c324de619b24e2ed522d8064c5a4610c8f509ff0aed8fa1719691f01bf1": { "Name": "tomcat2", "EndpointID": "de913778ce2d7478e25daca26809aa75c9093c43853d9420c70886fb16741722", "MacAdresse": "02:42:ac:11:00:03", "IPv4Adresse": "172.17.0.3/16", "IPv6Adresse": "" }, "90e94ac30a3c61b493d2ea38c32cf5dddb781e88c30547b609db765b15d7d1e0": { "Name": "tomcat3", "EndpointID": "2223e522a0950b846bb7691b31f60bbd88ab3c9b8e71d601a495cce39387b8cc", "MacAddress": "02:42:ac:11:00:04", "IPv4Adresse": "172.17.0.4/16", "IPv6Adresse": "" }, "f78c51961662a1d3558fc8d0d95906b902a7a042f251a60858e72bcfa62e7a08": { "Name": "tomcat1", "EndpointID": "59299fdca5497e55dc5a94e408529cc98819b673568720c81aa1c554dff1bbe5", "MacAdresse": "02:42:ac:11:00:02", "IPv4Adresse": "172.17.0.2/16", "IPv6Adresse": "" } }, "Optionen": { "com.docker.network.bridge.default_bridge": "wahr", "com.docker.network.bridge.enable_icc": "wahr", "com.docker.network.bridge.enable_ip_masquerade": "wahr", "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0", "com.docker.network.bridge.name": "docker0", "com.docker.network.driver.mtu": "1500" }, "Beschriftungen": {} } ] tomcat3 und mynet befinden sich nicht im selben Netzwerk, daher kann tomcat3 nicht auf die beiden Tomcats im mynet-Netzwerk zugreifen. Sie können tomcat3 und mynetwork über das Netzwerk verbinden, um einen bidirektionalen gegenseitigen Zugriff zu erreichen (unterstützt Containernamen). # Zeigen Sie die IP-Adresse des Containers im Mynet-Netzwerk an [root@localhost ~]# Docker-Netzwerk inspizieren Mynet [ { "Name": "mynet", "ID": "1abaa8e6a387bc8bbc7ac50d9f2289e96a143a92f074e90f698bd70411c86672", "Erstellt": "2021-05-13T11:21:13.494039122+08:00", "Geltungsbereich": "lokal", "Treiber": "Brücke", "EnableIPv6": false, "IPAM": { "Treiber": "Standard", "Optionen": {}, "Konfiguration": [ { "Subnetz": "192.168.0.0/16", "Gateway": "192.168.0.1" } ] }, "Intern": false, "Anfügbar": false, "Ingress": falsch, "Konfiguration von": { "Netzwerk": "" }, "ConfigOnly": falsch, "Container": { "404e4e63622b207af2ed534e768996f4d1cba4c798bba9e5d9b33c42711eaa4a": { "Name": "tomcat-n-1", "EndpointID": "b9efbd78daabe9345ade2a2e55291b7646d01679516e2f0be1efd5c2d6fea6b8", "MacAdresse": "02:42:c0:a8:00:02", "IPv4Adresse": "192.168.0.2/16", "IPv6Adresse": "" }, "f6352fb3db01beed6ddf17ef84999a4ab209f026a6137b3bc7e35335d434785f": { "Name": "tomcat-n-2", "EndpointID": "6b05a1ceff43514305bf3d0adf9e30ba8007db5ec8349d47f96ff2b216912fc0", "MacAdresse": "02:42:c0:a8:00:03", "IPv4Adresse": "192.168.0.3/16", "IPv6Adresse": "" } }, "Optionen": {}, "Beschriftungen": {} } ] # tomcat3 ping ip funktioniert nicht [root@localhost ~]# docker exec -it tomcat3 ping 192.168.0.2 PING 192.168.0.2 (192.168.0.2) 56(84) Bytes Daten. ^C --- 192.168.0.2 Ping-Statistiken --- 7 Pakete gesendet, 0 empfangen, 100 % Paketverlust, Zeit 11 ms [root@localhost ~]# docker exec -it tomcat3 ping 192.168.0.3 PING 192.168.0.3 (192.168.0.3) 56(84) Bytes Daten. ^C --- 192.168.0.3 Ping-Statistiken --- 9 Pakete gesendet, 0 empfangen, 100 % Paketverlust, Zeit 20 ms # Verwenden Sie connect, um ein Netzwerk mit den Containern eines anderen Netzwerks zu verbinden, und Sie können auf die Containernamen des jeweils anderen zugreifen [root@localhost ~]# docker network connect --help Verwendung: Docker-Netzwerkverbindung [OPTIONEN] NETZWERKCONTAINER Verbinden eines Containers mit einem Netzwerk Optionen: --alias strings Netzwerkweit gültigen Alias für den Container hinzufügen --driver-opt strings Treiberoptionen für das Netzwerk --ip Zeichenfolge IPv4-Adresse (z. B. 172.30.100.104) --ip6 Zeichenfolge IPv6-Adresse (z. B. 2001:db8::33) --link list Link zu einem anderen Container hinzufügen --link-local-ip strings Fügt eine Link-Local-Adresse für den Container hinzu [root@localhost ~]# Docker-Netzwerk verbinden Mynet Tomcat3 [root@localhost ~]# docker exec -it tomcat3 ping tomcat-n-1 PING tomcat-n-1 (192.168.0.2) 56(84) Bytes Daten. 64 Bytes von tomcat-n-1.mynet (192.168.0.2): icmp_seq=1 ttl=64 Zeit=0,235 ms 64 Bytes von tomcat-n-1.mynet (192.168.0.2): icmp_seq=2 ttl=64 Zeit=0,070 ms 64 Bytes von tomcat-n-1.mynet (192.168.0.2): icmp_seq=3 ttl=64 Zeit=0,064 ms ^C --- Tomcat-n-1 Ping-Statistiken --- 3 Pakete gesendet, 3 empfangen, 0 % Paketverlust, Zeit 6 ms RTT min./avg./max./mdev. = 0,064/0,123/0,235/0,079 ms [root@localhost ~]# docker exec -it tomcat-n-1 ping tomcat3 PING tomcat3 (192.168.0.4) 56(84) Bytes Daten. 64 Bytes von tomcat3.mynet (192.168.0.4): icmp_seq=1 ttl=64 Zeit=0,055 ms 64 Bytes von tomcat3.mynet (192.168.0.4): icmp_seq=2 ttl=64 Zeit=0,169 ms 64 Bytes von tomcat3.mynet (192.168.0.4): icmp_seq=3 ttl=64 Zeit=0,194 ms ^C --- Tomcat3-Ping-Statistiken --- 3 Pakete gesendet, 3 empfangen, 0 % Paketverlust, Zeit 6 ms RTT min./avg./max./mdev. = 0,055/0,139/0,194/0,061 ms Oben finden Sie ausführliche Inhalte zu den Docker-Netzwerkprinzipien und eine detaillierte Analyse benutzerdefinierter Netzwerke. Weitere Informationen zu den Docker-Netzwerkprinzipien finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Implementierung der CSS-Bildlaufleisten-Stileinstellungen
>>: So fügen Sie Anführungszeichen in HTML-Titel ein
Inhaltsverzeichnis Zwei Hauptkategorien von Funkt...
In diesem Artikel wird der spezifische Code von J...
1. Laden Sie das Axios-Plugin herunter cnpm insta...
In diesem Artikel finden Sie den spezifischen Cod...
In diesem Artikel wird der spezifische Prozess de...
1. Einleitung Wenn Sie früher einen bestimmten Te...
Inhaltsverzeichnis 1. Node.js und Vue 2. Führen S...
In diesem Artikel finden Sie das Installations-Tu...
Das Installationstutorial für mysql5.7.17 wird Ih...
Inhaltsverzeichnis 1. Vorschau der Schnittstellen...
Inhaltsverzeichnis 1. Einführung in Podman 2. Vor...
Inhaltsverzeichnis Stellen Sie nginx auf Server1 ...
Die bedingten Kommentare des Internet Explorers s...
Wenn Sie mit virtuellen Maschinen noch nicht vert...
Lassen Sie uns zunächst verstehen, was MySQL ist....