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”
- Cómo reenviar puertos en Docker usando Docker Compose
- Cómo reenviar el puerto a una red específica
- Conclusión
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
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
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 PDEn 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
Para ver las redes Docker, utilice el botón ' red acoplable ls ' dominio:
red acoplable esAquí, 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-imgEn 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