Visites de conteneurs Docker

Référence: https://www.cnblogs.com/shenh/p/9714547.html

table des matières

Trois moyens d'accès mutuel entre les conteneurs Docker

Première méthode, accès IP virtuel

Méthode trois, créer un réseau de pont


Trois moyens d'accès mutuel entre les conteneurs Docker

  Nous savons tous que les conteneurs docker sont isolés les uns des autres et ne peuvent pas accéder les uns aux autres, mais que se passe-t-il s'il existe des services dépendants? Voici trois méthodes pour résoudre le problème des échanges de conteneurs.

Première méthode, accès IP virtuel

 Lorsque docker est installé, docker crée par défaut un réseau de pont interne docker0. Chaque fois qu'un conteneur est créé, une carte réseau virtuelle est allouée et les conteneurs peuvent accéder les uns aux autres en fonction de l'adresse IP.

[root@33fcf82ab4dd /]# [root@CentOS ~]# ifconfig
......
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:35ff:feac:66d8  prefixlen 64  scopeid 0x20<link>
        ether 02:42:35:ac:66:d8  txqueuelen 0  (Ethernet)
        RX packets 4018  bytes 266467 (260.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4226  bytes 33935667 (32.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
......

 

 Exécutez un miroir centos et vérifiez l'adresse IP pour obtenir: 172.17.0.7

[root@CentOS ~]# docker run -it --name centos-1 docker.io/centos:latest
[root@6d214ff8d70a /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.7  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:acff:fe11:7  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ac:11:00:07  txqueuelen 0  (Ethernet)
        RX packets 16  bytes 1296 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 648 (648.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

Démarrez un autre conteneur avec la même commande et vérifiez l'adresse IP pour obtenir: 172.17.0.8

[root@CentOS ~]# docker run -it --name centos-2 docker.io/centos:latest
[root@33fcf82ab4dd /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.8  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:acff:fe11:8  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ac:11:00:08  txqueuelen 0  (Ethernet)
        RX packets 8  bytes 648 (648.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 648 (648.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

Les résultats du test ping à l'intérieur du conteneur sont les suivants:

[root@33fcf82ab4dd /]# ping 172.17.0.7
PING 172.17.0.7 (172.17.0.7) 56(84) bytes of data.
64 bytes from 172.17.0.7: icmp_seq=1 ttl=64 time=0.205 ms
64 bytes from 172.17.0.7: icmp_seq=2 ttl=64 time=0.119 ms
64 bytes from 172.17.0.7: icmp_seq=3 ttl=64 time=0.118 ms
64 bytes from 172.17.0.7: icmp_seq=4 ttl=64 time=0.101 ms

 

De cette manière, l'IP de chaque conteneur doit être connue, ce qui n'est pas pratique en utilisation réelle.

 

Ajouter un lien de paramètre lors de l'exécution du conteneur

Exécutez le premier conteneur

docker run -it --name centos-1 docker.io/centos:latest

Exécutez le deuxième conteneur

[root@CentOS ~]# docker run -it --name centos-2 --link centos-1:centos-1 docker.io/centos:latest

--link: le premier centos-1 du paramètre est le nom du conteneur et le second centos-1 est l'alias du conteneur défini (utilisez l'alias pour accéder au conteneur). Pour des raisons de commodité, l'alias est généralement la valeur par défaut nom du conteneur.

 

Les résultats des tests sont les suivants:

[root@e0841aa13c5b /]# ping centos-1
PING centos-1 (172.17.0.7) 56(84) bytes of data.
64 bytes from centos-1 (172.17.0.7): icmp_seq=1 ttl=64 time=0.210 ms
64 bytes from centos-1 (172.17.0.7): icmp_seq=2 ttl=64 time=0.116 ms
64 bytes from centos-1 (172.17.0.7): icmp_seq=3 ttl=64 time=0.112 ms
64 bytes from centos-1 (172.17.0.7): icmp_seq=4 ttl=64 time=0.114 ms

 

 Cette méthode a des exigences concernant l'ordre de création du conteneur. Si plusieurs conteneurs du cluster doivent se visiter, il n'est pas pratique à utiliser.

 

Méthode trois, créer un réseau de pont

1. Après avoir installé docker, exécutez la commande suivante pour créer un réseau de pont: docker network create testnet

Interrogez le testnet de pont nouvellement créé.

 

2. Exécutez le conteneur pour vous connecter au réseau testnet.

Comment utiliser: docker run -it --name <nom du conteneur> --- network <bridge> --network-alias <alias réseau> <nom du miroir>

[root@CentOS ~]# docker run -it --name centos-1 --network testnet --network-alias centos-1 docker.io/centos:latest
[root@CentOS ~]# docker run -it --name centos-2 --network testnet --network-alias centos-2 docker.io/centos:latest


 

3. Ping un autre conteneur à partir d'un conteneur, les résultats du test sont les suivants:

[root@fafe2622f2af /]# ping centos-1
PING centos-1 (172.20.0.2) 56(84) bytes of data.
64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=1 ttl=64 time=0.158 ms
64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=2 ttl=64 time=0.108 ms
64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=3 ttl=64 time=0.112 ms
64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=4 ttl=64 time=0.113 ms

 

  Il est recommandé d'utiliser cette méthode pour personnaliser le réseau, car l'alias réseau est utilisé, vous n'avez donc pas à vous soucier de savoir si l'IP change, tant que vous vous connectez au réseau lumineux interne du docker, vous pouvez vous rendre visite . Vous pouvez également créer plusieurs ponts, isolés sur différents segments de réseau.

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_22596931/article/details/115317400
conseillé
Classement