Seguridad en Contenedores: Docker 101 Gestión de Imágenes

Israel Aráoz Severiche
4 min readMay 12, 2024

--

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

Directorio que contiene los recursos para crear la imagen

Creamos el archivo Dockerfile

Archivo Dockerfile
  1. 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.
  2. ADD static/fruit.json /usr/share/nginx/html/fruit.json: Aquí se añade un archivo llamado fruit.json desde el directorio local static/ al directorio /usr/share/nginx/html/ dentro del contenedor. Esto significa que el archivo fruit.json estará disponible en la ruta /usr/share/nginx/html/fruit.json dentro del contenedor.
  3. ADD nginx.conf /etc/nginx/nginx.conf: Similar al paso anterior, este comando agrega un archivo nginx.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 ser nginx.conf en lugar de nginx.conf.
  4. 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.
  5. 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 ser nginx en lugar de ngnix. 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 .
Imagen Docker creada

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

Respuesta del servidor

Con el comando docker ps, podemos ver el contenedor en ejecución

Eso esto para este articulo, nos vemos en el siguiente !

--

--

Israel Aráoz Severiche
Israel Aráoz Severiche

Written by Israel Aráoz Severiche

{💀Cybersecurity Engineer​​🐞 } / { 🥋​ Purple Belt Brazilian Jiu Jitsu } / {🌐​https://twitter.com/iara0z}

No responses yet