Docker es una plataforma de código abierto que permite a los desarrolladores desarrollar, enviar y ejecutar aplicaciones fácilmente. Empaqueta una aplicación junto con sus dependencias en un contenedor virtual aislado que generalmente se ejecuta en un sistema Linux y es bastante liviano en comparación con una máquina virtual. La razón es que un contenedor comparte el kernel del sistema operativo solo con sus archivos binarios/bibliotecas cargados con él. Para obtener más información sobre Docker, lea Introducción a Docker .
En este artículo, crearemos y ejecutaremos un contenedor docker para NGINX. Después de eso, alojaremos un sitio web muy simple y pequeño en el contenedor Nginx.
Comencemos con algunos conceptos y definiciones útiles.
¿Por qué contenedores Docker?
Para responder perfectamente a esta pregunta deberíamos preguntarnos qué problemas resuelven.
Un problema común que enfrentan la mayoría de los desarrolladores es cuando una aplicación se ejecuta en una máquina pero no en otra. Esto puede deberse a diferentes sistemas operativos, diferentes versiones de bibliotecas, como un desarrollador que desarrolló una aplicación usando nodejs 14.1 pero la instancia en la nube tiene instalado nodejs 9.2.
Este es exactamente el problema que resuelve un contenedor docker, empaqueta las bibliotecas de la aplicación y todas las dependencias, precompiladas y listas para ejecutarse. Está aislado de otros contenedores y hace que la aplicación se sienta como la única que se ejecuta en el sistema.
Muchas organizaciones ahora se están moviendo a contenedores desde máquinas virtuales, ya que los contenedores son livianos y fáciles de mantener utilizando la CLI provista.
También ayuda en una fácil adaptación de la arquitectura de microservicios alejándose de los sistemas monolíticos tradicionales. Otros beneficios incluyen escalabilidad, modificación y mantenimiento.
Imágenes de Docker y Docker Hub
Una imagen acoplable es como una instantánea en entornos de VM. Registra información sobre el contenedor docker en un momento específico como todas las bibliotecas junto con sus versiones particulares necesarias para una aplicación. Es inmutable pero se puede duplicar fácilmente y compartir con otros.
Una imagen generalmente se comparte con otros para permitir que otra persona ejecute la aplicación en el mismo entorno en el que se supone que debe ejecutarse y la imagen contiene toda la información sobre ese entorno.
Un concentrador Docker es una de esas plataformas donde puede encontrar y compartir imágenes de contenedores con otros. Algunas de las imágenes más comunes son para Nginx, Nodejs, Mongo DB y muchas más.
Un contenedor Docker para NGINX
¿Qué es NGiNX?
Cuando un usuario solicita una página de un servidor web, el servidor web toma la solicitud y envía una respuesta adecuada al usuario. Nginx puede ser ese servidor web.
NGINX es un servidor web de código abierto que también se utiliza para proxy inverso, equilibrio de carga HTTP y proxy de correo electrónico. Es muy eficiente en el uso de los recursos del sistema y puede manejar una gran cantidad de requests simultáneas utilizando una arquitectura asíncrona y basada en eventos. Esa es la razón por la cual Nginx es una excelente opción para sitios web que manejan una gran carga, como el comercio electrónico, el almacenamiento en la nube y los motores de búsqueda.
Crear un contenedor docker para NGINX
1. Descargue la imagen oficial de NGINX desde Docker Hub con el siguiente comando.
docker pull nginx:latest
Este comando obtendrá la última versión de la imagen de nginx, pero puede reemplazar «más reciente» con la versión que necesita y se descargará.
2. Confirme que la imagen se ha descargado usando el siguiente comando.
docker images
El resultado debería incluir nginx junto con sus otras imágenes como esta.
3. Ahora ejecute la imagen de la ventana acoplable con el siguiente comando.
docker run -p 8000:80 nginx
Explicación: con el comando anterior, está ejecutando el servidor nginx, donde -p es el indicador para asignar el puerto 8000 (máquina local) al puerto 80 en el contenedor, ya que 80 es el puerto en el que nginx sirve de manera predeterminada.
4. Verifique la instalación visitando el host local en el puerto 8000. Obtendremos la página predeterminada para el servidor web nginx de la siguiente manera:
5. Para detener el contenedor acoplable, presione CTRL + C.
Aloje un sitio web simple en NGINX ejecutándose en un contenedor Docker
Crearemos dos archivos, uno es index.html y aboutme.html y alojaremos estos archivos en un nuevo contenedor que ejecuta el servidor Nginx.
1. La estructura de archivos después de crear los dos archivos será la siguiente:
2. El index.html y aboutme.html contienen el siguiente código:
índice.html
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>NGINX Example</title> </head> <body> <h1>HI!!</h1> <h3>This is NGINX</h3> <footer> <a href="./aboutme.html">About ME</a> </footer> </body> </html>
Explicación: esta página web contiene dos encabezados y un pie de página que tiene un enlace a la página Acerca de mí .
sobre mi.html
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>About me</title> </head> <body> <h1>Hello!</h1> <h3>This is ganesh prasad!</h3> </body> </html>
Explicación: esta página muestra un encabezado h1 con «Hola» como texto y un encabezado h3 con «Este es Ganesh Prasad» como cuerpo.
3. Use el siguiente comando para crear un contenedor docker que asigne el puerto de la máquina local al puerto en el que sirve nginx y monte estos dos archivos en una ubicación en el contenedor que nginx usa para alojar archivos ( /usr/share/nginx/html ).
docker run -d -p 8000:80 -v address_to_folder_with_files_locally:/usr/share/nginx/html --name my-nginx-server nginx
Explicación:
- El indicador -d se usa para ejecutar el servidor en modo separado en segundo plano.
- -p se usa para asignar el puerto local al puerto del contenedor donde el servidor está sirviendo.
- -v se usa para montar la carpeta que contiene los archivos en una ubicación en el contenedor que Nginx usa para servir las páginas web.
- –name es proporcionar el nombre del contenedor y finalmente proporcionamos el nombre de la imagen.
Producción:
Visite la dirección localhost:8000 en su navegador y verá lo siguiente:
Y al hacer clic en el enlace Acerca de mí , lo lleva a la página Acerca de mí.
Para detener el contenedor docker, puede usar el siguiente comando.
docker stop my-nginx-server
Conclusión:
En este artículo, aprendimos brevemente sobre la ventana acoplable, el contenedor, las imágenes y el centro de la ventana acoplable. Luego, creamos un contenedor docker usando la imagen oficial de nginx del hub docker y lo ejecutamos. También aprendimos cómo podemos enumerar todas las imágenes en nuestro sistema y cómo detener un contenedor docker. Después de eso, alojamos una pequeña página web en el servidor nginx que se ejecuta en un contenedor docker.