Maison >Opération et maintenance >Docker >Explication détaillée de la commande docker network
Jetons d'abord un coup d'œil à toutes les sous-commandes du réseau :
(Tutoriel recommandé : tutoriel docker)
docker network create docker network connect docker network ls docker network rm docker network disconnect docker network inspect
一, Créer un réseau
Lors de l'installation de Docker Engine, un réseau de pont docker0 par défaut sera automatiquement créé. De plus, vous pouvez également créer votre propre réseau de pont ou réseau superposé.
Le réseau pont est attaché à un seul hôte exécutant Docker Engine, tandis que le réseau superposé peut couvrir plusieurs environnements hôtes exécutant leurs moteurs Docker respectifs.
Créer un réseau de ponts est relativement simple comme suit :
# 不指定网络驱动时默认创建的bridge网络 docker network create simple-network # 查看网络内部信息 docker network inspect simple-network # 应用到容器时,可进入容器内部使用ifconfig查看容器的网络详情
Mais créer un réseau de superposition nécessite certains prérequis (pour des opérations spécifiques, veuillez vous référer au contenu associé du réseau de conteneurs Docker) :
- key-value store(Engine支持Consul、Etcd和ZooKeeper等分布式存储的key-value store) - 集群中所有主机已经连接到key-value store - swarm集群中每个主机都配置了下面的daemon参数 - –cluster-store - –cluster-store-opt - –cluster-advertise
Ensuite, créez un réseau superposé :
# 创建网络时,使用参数`-d`指定驱动类型为overlay docker network create -d overlay my-multihost-network
En termes d'utilisation de l'option --subnet pour créer un sous-réseau, le réseau pont ne peut spécifier qu'un seul sous-réseau, tandis que le réseau superposé prend en charge plusieurs sous-réseaux.
Les réseaux créés sous le pont et les pilotes de réseau superposés peuvent spécifier différents paramètres.
2. Connectez le conteneur
Créez trois conteneurs. Les deux premiers utilisent le réseau par défaut pour démarrer le conteneur, et le troisième utilise le réseau de pont personnalisé pour démarrer le conteneur. Ajoutez ensuite le deuxième conteneur au réseau personnalisé. Les conditions réseau de ces trois conteneurs sont les suivantes :
Le premier conteneur : uniquement le docker0 par défaut
Le deuxième conteneur : appartient à deux réseaux - docker0, réseau personnalisé
Le troisième conteneur : appartient uniquement au réseau personnalisé
Remarque : le démarrage du réseau spécifié via le conteneur écrasera le réseau de pont par défaut docker0.
# 创建三个容器 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. La différence entre le réseau par défaut et le réseau de pont personnalisé
Docker réseau par défaut0 : tous les hôtes du réseau ne peuvent accéder les uns aux autres qu'en utilisant IP. Les conteneurs créés avec l'option --link peuvent accéder directement au nom du conteneur lié (nom-du-conteneur) en tant que nom d'hôte.
Réseau personnalisé (pont) : en plus de l'accès IP, tous les hôtes du réseau peuvent également accéder directement les uns aux autres en utilisant le nom du conteneur (container-name) comme nom d'hôte.
# 进入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. La différence entre le réseau par défaut et le réseau de pont personnalisé dans la connexion au conteneur
L'utilisation d'un lien (lien d'héritage) dans le réseau par défaut a les fonctions suivantes :
- 使用容器名作为hostname - link容器时指定alias: --link=<Container-Name>:<Alias> - 配合--icc=false隔离性,实现容器间的安全连接 - 环境变量注入
Auto L'utilisation de docker net dans un réseau défini fournit les fonctions suivantes :
- 使用DNS实现自动化的名称解析 - 一个网络提供容器的安全隔离环境 - 动态地attach与detach到多个网络 - 支持与--link选项一起使用,为链接的容器提供别名(可以是尚不存在链接容器,与默认容器中–link使用的最大差别)
Le lien dans le réseau par défaut est statique et ne permet pas au conteneur de liens de redémarrer, tandis que le lien dans le réseau personnalisé est dynamique et prend en charge le redémarrage du conteneur de liens. (Et les changements IP)
Par conséquent, le conteneur lié lors de l'utilisation de --link doit être créé à l'avance dans le réseau par défaut, mais n'a pas besoin d'être pré-construit dans le réseau personnalisé.
Lorsque vous utilisez Docker Network Connectct pour connecter un conteneur à un nouveau réseau, lors de la liaison du même conteneur avec le paramètre --link, vous pouvez spécifier différents alias, qui sont destinés à différents réseaux.
# 运行容器使用自定义网络,同时使用--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. Spécifiez l'alias de portée réseau du conteneur (alias de portée réseau)
L'alias de portée réseau est l'alias du conteneur spécifié auquel d'autres conteneurs peuvent accéder même portée réseau.
À la différence des alias de lien, les alias de lien sont fournis par l'utilisateur du conteneur de liens et ne peuvent être utilisés que par lui-même, tandis que les alias dans la plage réseau spécifiée sont fournis par le conteneur pour être utilisés par d'autres conteneurs du réseau ; .
Alias à l'échelle du réseau : plusieurs conteneurs dans le même réseau peuvent spécifier le même alias. Bien entendu, seul le premier conteneur avec l'alias spécifié prendra effet
Uniquement lorsque le premier conteneur est fermé. l'alias du deuxième conteneur qui spécifie le même alias prendra effet.
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
6. Déconnectez et supprimez le réseau
# 容器从mynet网络中断开(它将无法再网络中的容器container3通讯) docker network disconnect mynet container2 # 测试与容器container3失败 docker attach container2 ping contianer3 # 访问失败
Dans un environnement réseau multi-hôtes, le conteneur apparaîtra déjà lors de la connexion d'un conteneur au réseau avec un nom de conteneur supprimé Erreur Connecté au réseau,
À ce stade, vous devez supprimer de force le nouveau conteneur avec docker rm -f, réexécuter et vous connecter au réseau.
La suppression d'un réseau nécessite que tous les conteneurs du réseau se ferment ou se déconnectent de ce réseau. La commande de suppression ne peut être utilisée que :
# 断开最后一个连接到mynet网络的容器 docker network disconnet mynet container3 # 移除网络 docker network rm mynet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!