Schauen wir uns zunächst alle Unterbefehle des Netzwerks an:
(Empfohlenes Tutorial: Docker-Tutorial)
docker network create docker network connect docker network ls docker network rm docker network disconnect docker network inspect
1. Erstellen Sie ein Netzwerk
Bei der Installation von Docker Engine wird automatisch ein Standard-Bridge-Netzwerk docker0 erstellt erstellt. Darüber hinaus können Sie auch Ihr eigenes Bridge-Netzwerk oder Overlay-Netzwerk erstellen.
Das Bridge-Netzwerk ist an einen einzelnen Host angeschlossen, auf dem die Docker Engine ausgeführt wird, während das Overlay-Netzwerk mehrere Host-Umgebungen abdecken kann, auf denen die jeweiligen Docker Engines ausgeführt werden.
Das Erstellen eines Bridge-Netzwerks ist wie folgt relativ einfach:
# 不指定网络驱动时默认创建的bridge网络 docker network create simple-network # 查看网络内部信息 docker network inspect simple-network # 应用到容器时,可进入容器内部使用ifconfig查看容器的网络详情
Aber das Erstellen eines Overlay-Netzwerks erfordert einige Voraussetzungen (für bestimmte Vorgänge lesen Sie bitte den Inhalt zum Docker-Container-Netzwerk):
- key-value store(Engine支持Consul、Etcd和ZooKeeper等分布式存储的key-value store) - 集群中所有主机已经连接到key-value store - swarm集群中每个主机都配置了下面的daemon参数 - –cluster-store - –cluster-store-opt - –cluster-advertise
Dann erstellen Sie ein Overlay-Netzwerk:
# 创建网络时,使用参数`-d`指定驱动类型为overlay docker network create -d overlay my-multihost-network
Einfach verwenden – Für die Subnetzoption zum Erstellen eines Subnetzes kann das Bridge-Netzwerk nur ein Subnetz angeben, während das Overlay-Netzwerk mehrere Subnetze unterstützt.
Netzwerke, die unter Bridge- und Overlay-Netzwerktreibern erstellt wurden, können unterschiedliche Parameter angeben.
2. Verbinden Sie den Container.
Erstellen Sie drei Container. Die ersten beiden verwenden das Standardnetzwerk, um den Container zu starten, und der dritte verwendet das benutzerdefinierte Bridge-Netzwerk. Fügen Sie dann den zweiten Container zum benutzerdefinierten Netzwerk hinzu. Die Netzwerkbedingungen dieser drei Container sind wie folgt:
Der erste Container: nur der Standard-Docker0
Der zweite Container: gehört zu zwei Netzwerken – Docker0, benutzerdefiniertes Netzwerk
Der dritte Container: gehört nur zum benutzerdefinierten Netzwerk
Hinweis: Wenn Sie das angegebene Netzwerk über den Container starten, wird das Standard-Bridge-Netzwerk docker0 überschrieben.
# 创建三个容器 conTainer1,container2,container3 docker run -itd --name=container1 busybox docker run -itd --name=container2 busybox # 创建网络mynet docker network create -d bridge --subnet 172.25.0.0/16 mynet # 将容器containerr2连接到新建网络mynet docker network connect mynet container2 # 使用mynet网络来容器container3 docker run --net=mynet --ip=172.25.3.3 -itd --name=container3 busybox # 查看这三个容器的网络情况 docker network inspect container1 # docker0 docker network inspect container2 # docker0, mynet docker network inspect container3 # mynet
3. Der Unterschied zwischen dem Standardnetzwerk und dem benutzerdefinierten Bridge-Netzwerk
Standardnetzwerk-Docker0: Alle Hosts im Netzwerk können nur über IP aufeinander zugreifen. Container, die mit der Option --link erstellt wurden, können als Hostnamen direkt auf den verknüpften Containernamen (Container-Name) zugreifen.
Benutzerdefiniertes Netzwerk (Bridge): Zusätzlich zum IP-Zugriff können alle Hosts im Netzwerk auch direkt untereinander über den Containernamen (container-name) als Hostnamen zugreifen.
# 进入container2内部 docker attach container2 ping -w 4 container3 # 可访问 ping -w 4 container1 # 不可访问 ping -w 4 172.17.0.2 # 可访问container1的IP # Ctrl+P+Q退出容器,让container2以守护进程运行
4. Der Unterschied zwischen dem Standardnetzwerk und dem benutzerdefinierten Bridge-Netzwerk bei der Containerverbindung
Die Verwendung von Link (legency link) im Standardnetzwerk hat die folgenden Funktionen:
- 使用容器名作为hostname - link容器时指定alias: --link=<Container-Name>:<Alias> - 配合--icc=false隔离性,实现容器间的安全连接 - 环境变量注入
Die Verwendung von Docker Net im benutzerdefinierten Netzwerk bietet die folgenden Funktionen :
- 使用DNS实现自动化的名称解析 - 一个网络提供容器的安全隔离环境 - 动态地attach与detach到多个网络 - 支持与--link选项一起使用,为链接的容器提供别名(可以是尚不存在链接容器,与默认容器中–link使用的最大差别)
Der Link im Standardnetzwerk ist statisch und ermöglicht keinen Neustart des Link-Containers, während der Link im benutzerdefinierten Netzwerk dynamisch ist und den Neustart des Link-Containers (und IP-Änderungen) unterstützt.
Daher ist der verknüpfte Container wann Verwenden von --link Das Standardnetzwerk muss im Voraus erstellt werden, das benutzerdefinierte Netzwerk muss jedoch nicht vorab erstellt werden.
Wenn Sie Docker Network Connectct verwenden, um einen Container mit einem neuen Netzwerk zu verbinden, können Sie beim Verknüpfen desselben Containers mit dem Parameter --link verschiedene Aliase angeben, die für verschiedene Netzwerke gelten.
# 运行容器使用自定义网络,同时使用--link链接尚不存在的container5容器 docker run --net=mynet -itd --name=container4 --link container5:c5 busybox # 创建容器container5 docker run --net=mynet -itd --name=container5 --link container4:c4 busybox # 虽然是相同容器,但是在不同的网络环境连接中可以不同的alias链接 docker network connect --link container5:foo local_alias container4 docker network connect --link container4:bar local_alias container5
5. Geben Sie den netzwerkbezogenen Alias des Containers an (netzwerkbezogener Alias).
Der netzwerkbezogene Alias ist der Alias des angegebenen Containers, auf den andere Container innerhalb desselben Netzwerkbereichs zugreifen können.
Anders als Link-Aliase werden Link-Aliase vom Benutzer des Link-Containers bereitgestellt und können nur von ihm selbst verwendet werden, während Aliase innerhalb des angegebenen Netzwerkbereichs vom Container zur Verwendung durch andere Container im Netzwerk bereitgestellt werden.
Netzwerkbezogener Alias: Mehrere Container im selben Netzwerk können denselben Alias angeben. Natürlich wird nur der erste Container mit dem angegebenen Alias wirksam.
Nur wenn der erste Container geschlossen ist, wird der dritte Container mit demselben Alias verwendet Die Aliase der beiden Container werden dann wirksam. 6. Trennen und entfernen Sie das Netzwerk Entfernen Sie den neuen Container mit docker rm -f, führen Sie ihn erneut aus und verbinden Sie ihn mit dem Netzwerk.
Das Entfernen eines Netzwerks erfordert, dass alle Container im Netzwerk geschlossen oder von diesem Netzwerk getrennt werden, bevor Sie den Befehl zum Entfernen verwenden können:
docker run --net=mynet -itd --name=container6 --net-alias app busybox docker network connect --alias scoped-app local_alias container6 docker run --net=isolated_nw -itd --name=container7 --net-alias app busybox docker network connect --alias scoped-app local_alias container7 # 在container4中 docker attach container4 ping app # 访问container6的IP # 从container4中以守护进程运行退出:Ctrl+P+Q docker stop container6 docker attach container4 ping app # 访问的container7的IP
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Docker-Netzwerkbefehls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!