Mapeo de puertos Docker / interconexión de contenedores

Uno, mapeo de puertos

1. Concepto

  • La asignación de puertos de Docker consiste en asignar el puerto de servicio de la aplicación en el contenedor a la máquina host local.

2. Implementación

Mapeo aleatorio

  • Al usar el parámetro -P, Docker asignará aleatoriamente un puerto al puerto de red abierto del contenedor interno y abrirá un servicio nginx de la siguiente manera
$ 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

  • En este momento, use docker ps para ver que el puerto 32769 del host local está asignado al puerto 80 del contenedor. En este momento, cuando navegamos a través del host local y visitamos http: // localhost: 32769, el nginx aparecerá la página.

Especificar mapeo de puertos

  • Al usar el parámetro -p, puede especificar el puerto que se asignará y solo se puede vincular un contenedor a un puerto específico.
  • Los formatos admitidos son:
    IP: HostPort: ContainerPort
    IP: ContainerPort
    HostPort: ContainerPort
  • Iniciemos un servicio nginx y mapeemos el puerto local 8080 al puerto 80 del contenedor
$ 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

  • En este momento, use docker ps para ver que el puerto 8080 del host local está asignado al puerto 80 del contenedor. En este momento, cuando visitemos http: // localhost: 8080 a través del navegador local, aparecerá la página de bienvenida de nginx .

3. Ver el puerto asignado

  • Utilice el comando del puerto de la ventana acoplable para ver la configuración del puerto actualmente mapeado y también puede ver la dirección vinculada. El formato del comando es el siguiente:
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
  • El contenedor tiene su propia red interna y dirección IP. Puede usar Docker Inspect + ID de contenedor para obtener información específica sobre el contenedor.

4.Docker agrega un puerto mapeado al contenedor en ejecución

método uno

Obtener la IP del contenedor

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

puerto de reenvío de iptables

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

Método dos

Envíe un contenedor en ejecución como imagen

docker commit containerid foo/live

Ejecute el espejo y agregue el puerto

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

Segundo, interconexión de contenedores

  • Cree y ejecute el contenedor llamado web1, y el número de puerto se asigna automáticamente
docker run -itd -P --name web1 centos /bin/bash
  • Cree y ejecute el dominio de contenedor web2, enlace a web1 y comuníquese con él
docker run -itd -P --name web2 --link web1:web1 centos /bin/bash
  • Ingrese el ping del contenedor web2 web1

Supongo que te gusta

Origin blog.csdn.net/weixin_45647891/article/details/115067654
Recomendado
Clasificación