Cómo reenviar puertos en Docker

Como Reenviar Puertos En Docker



Docker es una popular plataforma de dockerización que acopla aplicaciones y software en un entorno aislado conocido como contenedor. Mientras ejecutan aplicaciones en contenedores, los usuarios generalmente deben acceder a la aplicación en contenedor fuera del contenedor. Para ello, los usuarios deben aplicar la técnica de reenvío de puertos.

El reenvío de puertos en Docker es un proceso que nos permite exponer el puerto del contenedor en el sistema host de Docker. Nos permite ejecutar la aplicación en un entorno aislado y también hacerla accesible desde fuera del contenedor en una máquina de usuario.

Esta publicación demostrará:







Cómo reenviar puertos en Docker usando la etiqueta “-p” o “–publish”

Para reenviar un puerto en Docker, el usuario debe publicar el puerto del contenedor en el host de Docker. Para ello, ejecute el contenedor en el host de la ventana acoplable usando el comando ' -pag ' o ' -publicar 'Etiqueta en el' ejecución de la ventana acoplable ' dominio.



Para una demostración adecuada, siga las instrucciones a continuación.



Paso 1: crear Dockerfile

Primero, cree un archivo y establezca su nombre como ' archivo acoplable ”. Este archivo contiene las instrucciones textuales para crear la plantilla del contenedor Docker. Por ejemplo, dockericemos el programa Golang simple usando el siguiente fragmento en el Dockerfile:





DE golang: 1.8

DIRTRABAJO / ir / src / aplicación

COPIAR main2.go.

CORRER ir a construir -O Servidor web .

EXPONER 8080

CMD [ './Servidor web' ]

En el fragmento dado:

  • DE El comando 'se utiliza para configurar la imagen base.
  • DIRTRABAJO 'Define el directorio de trabajo del contenedor.
  • COPIAR El comando 'creará una copia del archivo del programa en la ruta especificada por el contenedor.
  • CORRER El comando 'ejecutará el comando especificado en el contenedor.
  • EXPONER El comando 'especifica el puerto donde se escuchará el contenedor.
  • CMD ”especifica los puntos ejecutables del contenedor.

Paso 2: cree un programa Golang

A continuación, cree otro archivo llamado ' principal2.go 'Y pegue el programa Golang proporcionado a continuación que imprime una cadena simple en el puerto' 8080 ”:



paquete principal

importar (

  'fmt'

  'registro'

  'red/http'

)

controlador de funciones ( En http.ResponseWriter,r * http.Solicitud ) {

HTML := `

  TIPO DE DOCUMENTO html >

  < HTML >

  < cabeza >

    < título > Hola golang ! título >
 
    < estilo >

cuerpo {

color de fondo: #D2B48C;

    }

.envase {

alineación de texto: centro;

relleno: 50px;

    }

  estilo >

  cabeza >

  < cuerpo >

    < div clase = 'envase' >

    < h1 > Hola ! Bienvenido al tutorial de LinuxHint h1 >

    div >

  cuerpo >

  HTML >`

w.Encabezado ( ) .Colocar ( 'Tipo de contenido' , 'texto/html' )

fmt.Fprint ( En ,html )

}

función principal ( ) {

http.HandleFunc ( '/' , manipulador )

registro.Fatal ( http.ListenAndServe ( '0.0.0.0:8080' , nulo ) )

}

Paso 3: generar la instantánea del contenedor

Ahora, genere una instantánea para el contenedor a partir del Dockerfile especificado anteriormente. Para ello, primero, navegue hasta el directorio donde se crea el Dockerfile usando el botón ' cd ' dominio:

A continuación, genere la nueva imagen del contenedor usando el comando dado:

construcción de ventana acoplable -t golang-img.

El resultado dado muestra que la imagen se crea de acuerdo con el contexto de compilación proporcionado.

Paso 4: Reenviar el puerto anfitrión al puerto de contenedores

Ahora, ejecute el contenedor y reenvíe el puerto del host al puerto del contenedor para acceder a la aplicación Dockerize fuera del contenedor en una máquina local. Para ello ejecute el “docker run –name -p : ' dominio:

ejecución de la ventana acoplable --nombre continuar -pag 8080 : 8080 golang-img

Aquí el ' -pag El indicador 'se utiliza para publicar el puerto de ejecución del contenedor en el host de la ventana acoplable:

Paso 5: Verificación

Para verificación, vea los contenedores en ejecución usando ' ventana acoplable ps ”:

estibador PD

En el siguiente resultado, la aplicación en contenedores escucha en las interfaces de red disponibles ' 0.0.0.0 'en el puerto publicado' 8080 ”. Implica que el puerto se reenvía a la aplicación en ejecución en la máquina host:

Ahora, inicie el navegador y navegue hasta ' http://localhost:8080/ ”y verifique si se aplica o no la técnica de reenvío de puertos y si se puede acceder a la aplicación en contenedor fuera del contenedor en el sistema host:

Aquí hemos reenviado con éxito el puerto del host al puerto del contenedor y se puede acceder a la aplicación en el host de la ventana acoplable.

Cómo reenviar puertos en Docker usando Docker Compose

Para reenviar el puerto del contenedor al host para acceder a la aplicación en contenedor desde fuera del contenedor, el usuario puede utilizar el comando ' puerto ”Clave en el archivo yaml de redacción. Docker compose es un servicio Docker que nos permite ejecutar diferentes servicios y aplicaciones en diferentes contenedores. Utilizando el ' docker-compose.yml ”, el usuario también puede reenviar el puerto del contenedor a la máquina host y tener una conexión de aplicación con el mundo exterior.

Consulte el siguiente procedimiento para ver ilustraciones.

Paso 1: crear un archivo de redacción

Primero, genere un archivo llamado ' docker-compose.yml ”archivo y agregue el siguiente contenido al archivo:

versión: '3'

servicios:

web:

construir: .

puertos:

- 8080 : 8080

En el fragmento anterior, el ' puertos La clave 'se utiliza para conectar el host al puerto del contenedor. Aquí, el primer valor es el puerto del host y el segundo valor es el puerto del contenedor.

Paso 2: iniciar la aplicación

Después de especificar las instrucciones en el archivo de redacción, inicie la aplicación en un contenedor usando el botón ' Docker-componer ' dominio:

Docker-componer

Paso 3: Verificación

Para verificación, enumere los contenedores de redacción utilizando el botón ' docker-componer ps ' dominio:

docker-componer PD -a

Para comprobar si se puede acceder al contenedor en la máquina host, navegue hasta ' http://localhost:8080/ ”URL. Aquí puede ver que hemos reenviado efectivamente el puerto del contenedor en el host:

Cómo reenviar el puerto a una red específica

Para reenviar un puerto de contenedor a una red específica, el usuario debe especificar la red en la que desea acceder al contenedor mediante el botón ' -red ' opción. Mire los pasos dados para la demostración.

Paso 1: crear una red

Cree una nueva red usando el botón ' creación de red acoplable ' dominio. De forma predeterminada, esta red utilizará un controlador puente:

red acoplable crear red mygo

Para ver las redes Docker, utilice el botón ' red acoplable ls ' dominio:

red acoplable es

Aquí, hemos creado con éxito ' red-mygo 'Eso es usar' puente ' conductor:

Paso 2: Mapear la red

Para ejecutar y acceder al contenedor en la red específica utilizando la técnica de reenvío de puertos, utilice el siguiente comando:

ejecución de la ventana acoplable -pag 8080 : 8080 --red red-mygo golang-img

En el comando dado, el ' -pag La opción 'publica el contenedor en un puerto específico de la red especificada. Aquí el ' -red La opción 'se utiliza para definir la red acoplable:

Para la verificación, navegue nuevamente hasta ' http://localhost:8080 ”puerto y verifique si se puede acceder al contenedor en la red especificada o no:

El resultado anterior indica que efectivamente hemos reenviado el puerto del contenedor en una red específica.

Nota: Mientras usa la red 'host', el usuario no necesita publicar el puerto del contenedor al host usando el ' -pag ' o ' -publicar ' opción.

Reenviar puerto a una red específica mediante Docker Compose

Agregue el siguiente fragmento en el ' docker-compose.yml ' archivo. En el siguiente fragmento, el ' redes La tecla 'se utiliza para especificar la red:

versión: '3'
servicios:
   
web:
construir: .
puertos:
    - 8080 : 8080

Ahora, inicie la aplicación en un contenedor usando el botón ' Docker-componer ' dominio:

Docker-componer

Hemos cubierto los métodos para el reenvío de puertos en Docker.

Conclusión

Para reenviar el puerto en Docker para acceder a la aplicación Dockerize fuera del contenedor, el usuario puede usar el comando ' -pag ' o ' -publicar 'Opción en el' ejecución de la ventana acoplable 'Comando o el usuario puede utilizar el' puertos ”Clave en el archivo de redacción de Docker. Para acceder al contenedor en una red específica, el usuario puede reenviar el puerto del contenedor en una red utilizando el botón ' –red ' opción. Este blog ha demostrado las técnicas para reenviar puertos en Docker.