GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Docker Basics - Exposez les ports, la liaison de port et le lien docker

Cet article illustre trois méthodes pour lier des conteneurs Docker.

Exposer les ports et la liaison de port

Exposer les ports

Cette méthode est utilisée au sein du même réseau ou de l'hôte docker. Les conteneurs sur le même réseau peuvent communiquer entre eux via leurs ports exposés et vous pouvez exposer les ports par l'une des méthodes ci-dessous.

– Mettez EXPOSE 80 (ou n'importe quel port de votre choix) dans votre Dockerfile qui indiquera à Docker que le service de votre conteneur peut être connecté au port 80.
– Exposez un port en utilisant '–expose [numéro de port]' à partir du conteneur docker par 'run –expose [numéro de port]' :

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

Liaison de port

Cette méthode est utilisée pour l'extérieur du même réseau. Pour autoriser la communication via les ports définis vers des conteneurs en dehors du même réseau, vous devez publier les ports en utilisant l'indicateur -p lors de l'exécution du docker pour publier et mapper un ou plusieurs ports, ou l'indicateur -P pour publier tous les ports exposés et mapper vers des ports d'ordre supérieur. Vous pouvez effectuer le portage via l'une des méthodes ci-dessous :

-Exposer un port via Dockerfile par –exposer et publiez-le avec le -P drapeau. Il liera le port exposé à l'hôte Docker sur un port aléatoire.
-Expose un port via Dockerfile par –exposer et publiez-le avec le -p 21:21 flag, cela liera le port d'exposition à l'hôte Docker sur un certain port 21 avec l'invité 21.
– Liez le port par la commande d'exécution du conteneur docker :

# 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

Exemple :

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

Socket de domaine Unix au sein d'un seul hôte

Pour communiquer entre les conteneurs au sein d'un même hôte, vous pouvez utiliser des mécanismes IPC sous Linux en utilisant le même socket.Démarrez les deux dockers depuis l'hôte docker partageant un volume qui doit être créé dans la machine hôte :

# 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

Après la commande ci-dessus, les conteneurs dvc1 et dvc2 peuvent utiliser des sockets comme /var/tmp/SocketX à l'interconnexion.

Utiliser le mécanisme de lien Docker pour établir un lien entre les conteneurs

Docker peut créer un tunnel entre deux conteneurs en utilisant des variables d'environnement pour transmettre des informations du conteneur parent au conteneur enfant. Pour créer un lien, vous utilisez le –link drapeau :

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

Exemple :
-Vérifier le réseau du conteneur parent :

# 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)

-Liez les deux nouveaux conteneurs au conteneur parent :

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

-Inspecter le conteneur lié :

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

-Vérifiez le fichier hôte du nouveau conteneur, il contient les informations du conteneur parent :

# 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 /]#
Avertissement :L'indicateur –link est une fonctionnalité héritée de Docker. Il peut éventuellement être supprimé. À moins que vous ne deviez absolument continuer à l'utiliser, nous vous recommandons d'utiliser des réseaux définis par l'utilisateur pour faciliter la communication entre deux conteneurs au lieu d'utiliser –link. Une fonctionnalité que les réseaux définis par l'utilisateur ne prennent pas en charge et que vous pouvez faire avec –link est le partage des variables d'environnement entre les conteneurs. Cependant, vous pouvez utiliser d'autres mécanismes tels que les volumes pour partager les variables d'environnement entre les conteneurs de manière plus contrôlée.


Docker
  1. Exécuter PostgreSQL dans Docker, un guide rapide et pratique

  2. Qu'est-ce que Docker (et les conteneurs Linux ?)

  3. Quand et pourquoi utiliser Docker

  4. Installer Docker et WordPress sur Ubuntu

  5. Vérifiez quels ports et processus sont en cours d'exécution dans Ubuntu

Comment installer et utiliser Docker sur Ubuntu 22.04

Comment nettoyer et supprimer des images Docker

Comment exposer ou publier le port Docker

Ouvrir un port sous Linux

.NET Core et Docker

.NET et Docker