Tutoriales

Cómo reenviar puertos en Docker

Docker es una plataforma de Dockerización popular para aplicaciones y software de Dockerización en entornos aislados llamados contenedores. Cuando una aplicación se ejecuta en un contenedor, generalmente requiere que los usuarios accedan a la aplicación en contenedor fuera del contenedor. Para ello, los usuarios deben utilizar tecnología de reenvío de puertos.

El reenvío de puertos en Docker es un procedimiento que nos permite exponer los puertos del contenedor en el sistema host de Docker. Nos permite ejecutar la aplicación en un entorno aislado y también acceder a ella desde fuera del contenedor en el ordenador del usuario.

Este artículo mostrará:

Cómo reenviar un puerto en Docker usando la etiqueta «-p» o «-publish»

Para reenviar puertos en Docker, los usuarios deben publicar el puerto del contenedor en el host de Docker. Para hacer esto, use «-pag» o»-liberar«en etiquetas»ejecución terminal» Orden.

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

Paso 1: crear Dockerfile

Primero, cree un archivo y asígnele el nombre «archivo acoplable”. Este archivo contiene instrucciones de texto para crear una plantilla de contenedor Docker. Por ejemplo, vamos a acoplar un programa Golang simple usando el siguiente fragmento de código en Dockerfile:

Desde el Golán:1.8

lista de trabajo /ir/código fuente/aplicación

Copie main2.go.

Corre para construir -o Servidor web.

expuesto 8080

sistema de gestión de comandos [«./webserver»]

En el fragmento dado:

  • «deEl comando «se utiliza para configurar la imagen base.
  • «lista de trabajo”Define el directorio de trabajo del contenedor.
  • «clonEl comando «creará una copia del archivo del programa en la ruta especificada por el contenedor.
  • «correrEl comando «ejecutará el comando especificado en el contenedor.
  • «expuestoLa directiva especifica el puerto en el que se escuchará el contenedor.
  • «sistema de gestión de comandos«Especifica el punto ejecutable del contenedor.

Paso 2: cree un programa Golang

A continuación, crea otro llamado «principal2.go”y pegue el programa Golang que se proporciona a continuación, que imprime una cadena simple en el puerto de conexión8080«:

propietario del paquete

importar (

«FMT»

«registro»

«red/http»

)

controlador de funciones(w http.ResponseWriter,r *http.solicitud) {

HTML:= `

tipo de documento html>

<HTML>

<cabeza>

<título>hola golang!título>

<estilo>

Cuerpo {

color de fondo: #D2B48C;

}

. {

Alineación del texto: centrado;

Relleno: 50 px;

}

estilo>

cabeza>

<Cuerpo>

<dividir clase=«envase»>

<h1>Hola! Bienvenido al tutorial de LinuxHinth1>

dividir>

Cuerpo>

HTML>`

w.Título().(«Tipo de contenido», «texto/html»)

fmt.Fprint(wHTML)

}

La función principal() {

http.HandleFunc(«/»manipulador)

registro fatal(http.ListenAndServe(«0.0.0.0:8080»ninguno))

}

Paso 3: generar una instantánea del contenedor

Ahora, genere una instantánea del contenedor a partir del Dockerfile especificado anteriormente. Para hacer esto, primero, navegue hasta el directorio donde se creó el Dockerfile usandoCD » Orden:

A continuación, genere una nueva imagen de contenedor usando el comando dado:

construcción acoplable -t golang-img.

El resultado proporcionado indica que la imagen se creó en función del contexto de compilación proporcionado.

Paso 4: transferir el puerto host al puerto del contenedor

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 su computadora local.Para hacer esto, ejecute «nombre de ejecución de Docker -pag : » Orden:

ejecución terminal – Nombre continuar -pag 8080:8080 golang-img

esta aquí,»-pag«El indicador se utiliza para publicar el puerto de ejecución del contenedor en el host de Docker:

Paso 5: verificar

Para verificar, use «Ver contenedores en ejecución»Peón«:

En los resultados siguientes, la aplicación en contenedores está escuchando las interfaces de red disponibles».0.0.0.0«En un puerto publicado»8080”. Esto significa que el puerto se reenvía a la aplicación que se ejecuta en la máquina host:

Ahora, inicia tu navegador y navega hasta «http://localhost:8080/”y verifique que se aplique el reenvío de puertos y que se pueda acceder a la aplicación en contenedor fuera del contenedor en el sistema host:

En este punto, 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 un puerto de contenedor al host para acceder a aplicaciones en contenedores desde fuera del contenedor, los usuarios pueden usarpuerto» Escriba componer el archivo yaml. Docker compose es un servicio Docker que nos permite ejecutar diferentes servicios y aplicaciones en diferentes contenedores. Utilice «docker-compose.yml”, los usuarios también pueden transferir el puerto del contenedor al host y establecer conexiones de aplicaciones con el mundo exterior.

Vea las ilustraciones del proceso a continuación.

Paso 1: crear un documento redactado

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

Versión: «3»

Atender:

URL:

Hospedarse: .

Puerto:

8080:8080

En el fragmento de código anterior, «puertoLa 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: inicia la aplicación

Después de especificar la directiva en el archivo de redacción, use «Docker-componer» Orden:

Paso 3: verificar

Para verificar, utilice «Listar contenedores combinados»docker-componer ps» Orden:

Para comprobar si se puede acceder al contenedor en el host, navegue hastahttp://localhost:8080/”URL. Aquí puede ver que efectivamente hemos reenviado el puerto del contenedor en el host:

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

Para reenviar el puerto del contenedor a una red específica, los usuarios deben usar «-red» Opción. Vea los pasos de demostración indicados.

Paso 1: configurar una red

Crea una nueva red usandocreación de red acoplable «comando. De forma predeterminada, la red utilizará el controlador de puente:

establecimiento de red acoplable mygo-network

Para ver la red Docker, use «redes acoplables» Orden:

En este punto, hemos creado con éxito «red migo» esta usando»puente» conductor:

Paso 2: Mapear la red

Para utilizar el reenvío de puertos para ejecutar y acceder a un contenedor en una red específica, utilice el siguiente comando:

ejecución terminal -pag 8080:8080 -Internet red-mygo golang-img

En el comando dado, «-pag«La opción publica el contenedor en el puerto especificado en la red especificada. Aquí, «-redLa opción «se utiliza para definir la red acoplable:

Para verificar, navegue nuevamente hasta «http://localhost:8080”puerto y verifique si se puede acceder al contenedor en la red especificada:

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

notas: Cuando utilizan la red «Host», los usuarios no necesitan utilizar «Host» para publicar el puerto desde el contenedor al host.-pag» o»-liberar«Opciones.

Utilice Docker Compose para reenviar un puerto a una red específica

existir»docker-compose.yml» documento. En el fragmento de código siguiente, «redLa tecla «se utiliza para especificar una red:

Versión: «3»
Atender:

URL:
Hospedarse: .
Puerto:
8080:8080

Ahora usa «Docker-componer» Orden:

Ya hemos introducido el método de reenvío de puertos en Docker.

en conclusión

Para reenviar un puerto en Docker para acceder a aplicaciones dockerizadas fuera del contenedor, los usuarios pueden usar-pag» o»-liberar«opciones enejecución terminal«El comando o el usuario pueden usar»puerto«Escriba Docker Compose. Para acceder a los contenedores en una red específica, los usuarios pueden usar el «Puerto de contenedor en la red directa».-red » opción. Este blog demuestra la técnica de reenvío de puertos en Docker.

LEER  Cómo convertir páginas Man a HTML en Linux y Unix

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba