Uso de Dockerfile para exponer puertos

Uso de Dockerfile para exponer puertos
Es realmente fácil crear una imagen de Docker personalizada a partir de imágenes de Docker existentes usando Dockfile. Por lo general, las personas usan una imagen base mínima como alpino o Ubuntu/Debian para ese propósito. Digamos que desea crear una imagen de Docker personalizada de su aplicación web favorita escrita en NodeJS. La aplicación se ejecutará en el puerto 8080. Por defecto, no podrá acceder a la aplicación web en el puerto 8080 de tu máquina anfitriona. Tendrá que decirle a Docker que desea exponer o abrir puerto 8080 Para poder acceder a él desde su máquina host.

En este artículo, le mostraré cómo exponer puertos usando Dockfile con un ejemplo del mundo real. Empecemos.

Creación de un directorio de proyecto:

Primero, tenemos que crear un directorio de proyecto. En este directorio, debe mantener todos los archivos del proyecto y un Dockfile.

Ejecute el siguiente comando para crear un directorio de proyecto myapp/ En el directorio de inicio de sus usuarios y navegue a él:

$ mkdir ~/myapp && cd ~/myapp

Preparando la aplicación web:

Ahora crea un directorio SRC/ dentro de ~/myapp/ directorio con el siguiente comando:

$ mkdir src

En el SRC/ Directorio, todo el código fuente de mi aplicación NodeJS se mantendrá.

Simplemente crearé un simple aplicación.js archivo en el SRC/ directorio y ejecutar un servidor web simple en el puerto 8080 Solo para la demostración.

El SRC/APP.js El archivo contiene las siguientes líneas de códigos:

Escribir Dockerfile y exponer puertos:

Ahora crea un Dockfile en el ~/myapp directorio con el siguiente comando:

$ touch dockerfile

Ahora escriba las siguientes líneas para el Dockfile y guárdelo. Discutiré lo que significan estas líneas más tarde.

Aquí, De Alpine: 3.8 significa que use el Alpino: 3.8 Docker Image como base para la nueva imagen que construiremos a partir de este Dockfile.

Ejecutar la actualización APK significa, ejecutar el Actualización de APK comando en la imagen base Docker Alpino: 3.8.

Ejecutar APK Agregar -NO -Cache NodeJS significa, ejecutar el APK ADD comandar instalar el lenguaje de programación NodeJS en el Alpino: 3.8 Imagen base de Docker.

COPIAR ./SRC /APP significa, copiar todos los archivos del ~/myapp/src directorio al /aplicación Directorio de la nueva imagen de Docker que construiremos usando el Dockfile.

CMD [“/usr/bin/node”, “/app/app.js ”] significa, ejecutar el /App/App.js Archivo desde el nuevo contenedor usando nodo binario ubicado en /usr/bin/nodo.

Finalmente, a Exponer 8080/TCP significa, exponer o abrir el puerto TCP 8080 a la computadora host.

Creación de una imagen de Docker personalizada usando DockerFile:

Ahora hagamos una imagen de Docker personalizada nodo alpino: V1 utilizando el Dockfile que acabamos de crear.

Primero asegúrese de estar en el ~/myapp/ directorio y luego ejecute el siguiente comando para crear su imagen de Docker personalizada nodo alpino: V1:

$ Docker Build -T Alpine -Nodo: V1 .

Como puede ver, la imagen de Docker personalizada nodo alpino: V1 se está creando. La imagen y los paquetes de Docker base requeridos se extraen de Internet.

Como puede ver, la imagen de Docker personalizada nodo alpino: V1 se crea con éxito.

Prueba de la imagen de Docker personalizada:

Ahora podemos probar la imagen de Docker personalizada nodo alpino: V1 muy facilmente. Todo lo que tenemos que hacer es crear un contenedor de nodo alpino: V1 imagen.

Ejecute el siguiente comando para crear un contenedor Docker www desde el nodo alpino: V1 Imagen de Docker:

$ docker run -d -it - -name www alpine -nodo: v1

El contenedor www es creado.

Ahora descubramos la dirección IP del www Container Docker con el siguiente comando:

$ Docker Inspect www | dirección GREP

Como puede ver, en mi caso, la dirección IP es 172.17.0.3. Entonces, la aplicación NodeJS que escribí debería ser accesible desde el navegador web en el puerto 8080 de esta dirección IP.

Voila! Puedo acceder al puerto 8080 de mi www Contenedor de acopolador.

Así es básicamente cómo expone ciertos puertos en sus imágenes de Docker personalizadas que construirá usando Dockfile.

Exponer los puertos TCP y UDP usando DockerFile:

En la sección anterior de este artículo, le mostré cómo exponer un puerto TCP usando un Dockfile.

Puede exponer fácilmente un puerto TCP (digamos que el puerto TCP 53) en tus Dockfile Con la siguiente línea:

Exponer 53/TCP

También puede exponer un puerto UDP (digamos el puerto UDP 53) con la siguiente línea en tu Dockfile:

Exponer 53/UDP

Puede exponer el puerto TCP y UDP al mismo tiempo con las siguientes líneas en su Dockfile:

Exponer 53/TCP
Exponer 53/UDP

Si no especifica qué protocolo (TCP o UDP) usar, TCP se usa de forma predeterminada. Por ejemplo, si escribe la siguiente línea en su Dockfile:

Exponer 53

Entonces Docker asumirá que desea usar el puerto TCP 53.

Exponer múltiples puertos usando DockerFile:

Digamos que desea crear una imagen de Docker de pila media personalizada. En este caso, ejecutará un servidor HTTP en algún puerto (digamos el puerto TCP 80 u 8080), un servidor FTP que se ejecuta en el puerto TCP 21, un servidor de base de datos SQL (digamos MySQL) que se ejecuta en el puerto TCP 3306, o servidor de base de datos NoSQL (digamos MongoDB) que se ejecuta en el puerto TCP 27017 o 27018, un servidor SSH que se ejecuta en el puerto TCP 22. Eso es muchos puertos!

La buena noticia es; Puede exponer tantos puertos que se necesite en su imagen de Docker personalizada creada usando Dockfile.

Los puertos en el ejemplo anterior pueden expuestos con las siguientes líneas en su Dockfile:

Exponer 80/TCP
Exponer 8080/TCP
Exponer 21/TCP
Exponer 22/TCP
Exponer 3306/TCP
Exponer 27017/TCP
Exponer 27018/TCP

Si lo desea, puede dejar la especificación del protocolo ya que Docker usa TCP de forma predeterminada y hacer lo mismo con las siguientes líneas en su Dockfile:

Exponer 80
Exponer 8080
Exponer 21
Exponer 22
Exponer 3306
Exponer 27017
Exponer 27018

Si lo necesita, puede mezclar puertos TCP y UDP en su Dockfile. Por ejemplo, si ejecuta el servidor DNS (que se ejecuta en el puerto UDP 53), junto con el ejemplo anterior, agregaría las siguientes líneas a su Dockfile.

Exponer 80
Exponer 8080
Exponer 21
Exponer 22
Exponer 53/UDP
Exponer 3306
Exponer 27017
Exponer 27018

Así que así es como expone puertos usando Dockfile. Para aprender más sobre Dockfile y exponer puertos utilizando Dockfile, leer el Dockfile Guía de referencia en https: // docs.estibador.com/motor/reference/Builder/#Exponer

Gracias por leer este artículo.