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