Seguridad en Contenedores: Docker 101 Gestión de Imágenes
En el siguiente artículo describiré algunas aspectos básicos para la gestión de imágenes en docker.
Docker Images
Es un archivo (plantilla) de solo lectura que define el contenedor y contiene el código que debe ser ejecutado.
Las imágenes y contenedores usan un sistema de archivos por capas, cada capa contiene datos que no están en la capa anterior. Docker permite utilizar etiquetas para la gestión de imagenes, permite seleccionar la version exacta del servicio/framework/aplicacipon que debera ser ejecutada en un contenedor.
Docker File
Es un archivo que contiene las instrucciones necesarias para la ejecución de un servicio o aplicación en un contenedor, por ejemplo, una aplicación web desarrollada en Python. La imagen estará formada por el intérprete y su versión específica de Python, esta incluirá las librerías necesarias para una correcta ejecución.
Creando una imagen docker
Para crear la imagen docker, es necesario estar en el directorio que contiene todo lo necesario para la ejecución de la aplicación, para este ejemplo /fruit-list
Creamos el archivo Dockerfile
FROM nginx:1.15.8
: Esta línea indica que esta imagen de contenedor se basará en la imagen oficial de nginx con la etiqueta (versión) 1.15.8. Es decir, esta imagen se construirá a partir de la imagen base de nginx en su versión 1.15.8.ADD static/fruit.json /usr/share/nginx/html/fruit.json
: Aquí se añade un archivo llamadofruit.json
desde el directorio localstatic/
al directorio/usr/share/nginx/html/
dentro del contenedor. Esto significa que el archivofruit.json
estará disponible en la ruta/usr/share/nginx/html/fruit.json
dentro del contenedor.ADD nginx.conf /etc/nginx/nginx.conf
: Similar al paso anterior, este comando agrega un archivonginx.conf
desde el directorio local al directorio/etc/nginx/
dentro del contenedor. Sin embargo, hay un error tipográfico en el nombre del archivo, debería sernginx.conf
en lugar denginx.conf
.EXPOSE 80
: Esta línea especifica que el contenedor expondrá el puerto 80. Esto significa que los servicios que se ejecuten dentro del contenedor en el puerto 80 estarán disponibles para conexiones externas.CMD ["nginx", "-g","daemon off;"]
: Esta es la instrucción CMD que establece el comando predeterminado que se ejecutará cuando se inicie el contenedor. Sin embargo, hay un error tipográfico, debería sernginx
en lugar dengnix
. Este comando inicia nginx con la opción-g "daemon off;"
, que configura nginx para que se ejecute en el primer plano (foreground) en lugar de en el fondo (background), lo que es útil para contenedores Docker.
Para crear la imagen, es necesario ejecutar el siguiente comando. El parámetro build
permite crear la imagen, -t
se utiliza para etiquetar la imagen que se está construyendo y el .
indica que Docker debe buscar el archivo Dockerfile en el directorio actual.
docker build -t fruit-list:1.0.0 .
Ahora ejecutamos el contenedor. El parámetro — name asigna un nombre específico al contenedor. La opción -d indica que el contenedor se ejecuta en segundo plano. La opción -p 8080:80 mapea el puerto 8080 del sistema operativo al puerto 80 del contenedor
Para comprobar el contenedor esta en ejecución, hacemos un request al puerto 8080
Con el comando docker ps, podemos ver el contenedor en ejecución
Eso esto para este articulo, nos vemos en el siguiente !