GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Conceptos básicos de Docker:exposición de puertos, vinculación de puertos y enlace de Docker

Esta publicación ilustra tres métodos para vincular contenedores Docker.

Exponer puertos y vinculación de puertos

Exponer puertos

Este método se usa dentro de la misma red o el host de la ventana acoplable. Los contenedores en la misma red pueden comunicarse entre sí a través de sus puertos expuestos y usted puede exponer los puertos mediante uno de los siguientes métodos.

– Coloque EXPOSE 80 (o cualquier puerto que desee) en su Dockerfile que le indicará a Docker que el servicio de su contenedor se puede conectar al puerto 80.
– Exponga un puerto usando '–expose [número de puerto]' desde el contenedor docker por 'ejecutar – exponer [número de puerto]':

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

Asociación de puertos

Este método se utiliza para fuera de la misma red. Para permitir la comunicación a través de los puertos definidos con contenedores fuera de la misma red, debe publicar los puertos usando el indicador -p en Docker Run para publicar y asignar uno o más puertos, o el indicador -P para publicar todos los puertos expuestos y asignar a puertos de alto orden. Puede realizar la portabilidad a través de una de las siguientes formas:

-Exponer un puerto a través de Dockerfile mediante –expose y publicarlo con el -P bandera. Vinculará el puerto expuesto al host de Docker en un puerto aleatorio.
-Exponga un puerto a través de Dockerfile mediante –expose y publicarlo con el -p 21:21 marca, esto vinculará el puerto de exposición al host Docker en cierto puerto 21 con el invitado 21.
– Vincule el puerto mediante el comando de ejecución del contenedor 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

Ejemplo:

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

Socket de dominio Unix dentro de un solo host

Para comunicarse entre contenedores dentro de un solo host, puede usar mecanismos IPC en Linux usando el mismo socket. Inicie las dos ventanas acoplables desde el host de la ventana acoplable compartiendo un volumen que debe crearse en la máquina host:

# 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

Después del comando anterior, el contenedor dvc1 y dvc2 pueden usar sockets como /var/tmp/SocketX a la interconexión.

Utilice el mecanismo de enlace de Docker para configurar un enlace entre contenedores

Docker puede crear un túnel entre dos contenedores mediante el uso de variables de entorno para pasar información del contenedor principal al contenedor secundario. Para crear un enlace, utiliza el –link bandera:

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

Ejemplo:
-Comprobar la red del contenedor principal:

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

-Enlazar los dos nuevos contenedores con el contenedor padre:

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

-Inspeccionar el contenedor vinculado:

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

-Verifique el archivo host del nuevo contenedor, tiene la información del contenedor principal:

# 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 /]#
Advertencia :el indicador –link es una función heredada de Docker. Eventualmente puede ser eliminado. A menos que necesite absolutamente continuar usándolo, le recomendamos que use redes definidas por el usuario para facilitar la comunicación entre dos contenedores en lugar de usar –link. Una característica que las redes definidas por el usuario no admiten y que puede hacer con –link es compartir variables de entorno entre contenedores. Sin embargo, puede usar otros mecanismos como volúmenes para compartir variables de entorno entre contenedores de una manera más controlada.


Docker
  1. Cómo exportar e importar contenedores Docker

  2. diferencia entre podman y docker.

  3. ¿Qué es Docker (y los contenedores de Linux?)

  4. Cuándo y por qué usar Docker

  5. Evitar que otras aplicaciones se vinculen a los puertos 80 y 443

Cómo instalar y usar Docker en Ubuntu 22.04

Cómo limpiar y eliminar imágenes de Docker

Cómo exponer o publicar el puerto Docker

Abrir un puerto en Linux

.NET Core y Docker

.NET y Docker