Cartographie du port docker / interconnexion de conteneurs

Un, la cartographie des ports

1. Concept

  • Le mappage de port Docker consiste à mapper le port de service de l'application dans le conteneur sur la machine hôte locale

2. Mise en œuvre

Cartographie aléatoire

  • Lors de l'utilisation du paramètre -P, Docker mappera de manière aléatoire un port sur le port réseau ouvert du conteneur interne et ouvrira un service nginx comme suit
$ docker run -d -P nginx
e93349d539119dc48dc841e117f6388d6afa6a6065b75a5b4aedaf5fb2a051fc
$ 
$ docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
e93349d53911    nginx        "nginx -g 'daemon ..."  11 seconds ago   Up 9 seconds    0.0.0.0:32769->80/tcp  zen_kirch

  • À ce stade, utilisez docker ps pour voir que le port 32769 de l'hôte local est mappé sur le port 80 du conteneur. À ce stade, lorsque nous parcourons l'hôte local et visitons http: // localhost: 32769, le nginx La page apparaîtra.

Spécifier le mappage de port

  • Lorsque vous utilisez le paramètre -p, vous pouvez spécifier le port à mapper et un seul conteneur peut être lié à un port spécifié.
  • Les formats pris en charge sont:
    IP: HostPort: ContainerPort
    IP: ContainerPort
    HostPort: ContainerPort
  • Commençons un service nginx et mappons le port local 8080 au port 80 du conteneur
$ docker run -d -p 8080:80 nginx
23e725098712d061a1382f33d6fe54da23ae37597a62f8debdd3731b5f9cc4b9
$ 
$ docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
23e725098712    nginx        "nginx -g 'daemon ..."  8 seconds ago    Up 6 seconds    0.0.0.0:8080->80/tcp  frosty_ptolemy

  • À ce stade, utilisez docker ps pour voir que le port 8080 de l'hôte local est mappé sur le port 80 du conteneur. À ce stade, lorsque nous visitons http: // localhost: 8080 via le navigateur local, la page d'accueil de nginx apparaît. .

3. Afficher le port mappé

  • Utilisez la commande docker port pour afficher la configuration du port actuellement mappé et vous pouvez également afficher l'adresse liée. Le format de la commande est le suivant:
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
  • Le conteneur dispose de son propre réseau interne et de sa propre adresse IP. Vous pouvez utiliser docker inspect + ID de conteneur pour obtenir des informations spécifiques sur le conteneur.

4. Docker ajoute un port mappé au conteneur en cours d'exécution

première méthode

Obtenez l'adresse IP du conteneur

docker inspect `container_name` | grep IPAddress    //将container_name 换成实际环境中的容器名

port de transfert iptables

iptables -t nat -A  DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
//将容器的8000端口映射到docker主机的8001端口

Deuxième méthode

Soumettre un conteneur en cours d'exécution en tant qu'image

docker commit containerid foo/live

Exécutez le miroir et ajoutez un port

docker run -d -p 8000:80 foo/live /bin/bash

Deuxièmement, l'interconnexion des conteneurs

  • Créez et exécutez le conteneur nommé web1, et le numéro de port est automatiquement mappé
docker run -itd -P --name web1 centos /bin/bash
  • Créez et exécutez le domaine de conteneur web2, créez un lien vers web1 et communiquez avec lui
docker run -itd -P --name web2 --link web1:web1 centos /bin/bash
  • Entrez web2 container ping web1

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45647891/article/details/115067654
conseillé
Classement