Chuck's Academy

Docker

Imágenes en Docker: Creación y Gestión

En Docker, las imágenes son plantillas inmutables que contienen todos los elementos necesarios para ejecutar una aplicación, como el sistema operativo, el código, las librerías y las dependencias. Este capítulo explora cómo crear y gestionar imágenes en Docker mediante el uso de Dockerfiles y comandos de la CLI.

¿Qué es una Imagen en Docker?

Una imagen de Docker es un paquete inmutable que incluye el entorno completo requerido para ejecutar una aplicación. Las imágenes son creadas a partir de un archivo llamado Dockerfile, que define una serie de instrucciones para construir el entorno de la aplicación.

Esta imagen muestra el flujo de trabajo desde un Dockerfile hasta una imagen y luego un contenedorEsta imagen muestra el flujo de trabajo desde un Dockerfile hasta una imagen y luego un contenedor

Construcción de una Imagen con un Dockerfile

El Dockerfile es un archivo de texto que contiene instrucciones paso a paso para crear una imagen. Cada línea del Dockerfile representa una capa en la imagen, lo cual facilita la creación de imágenes eficientes y reutilizables.

Estructura Básica de un Dockerfile

A continuación, se muestra un ejemplo básico de un Dockerfile para una aplicación en Node.js:

dockerfile
"Este Dockerfile comienza con FROM node catorce, estableciendo una imagen base de Node.js. Define el directorio de trabajo como app con WORKDIR, copia el código al contenedor con COPY punto espacio punto, instala dependencias usando RUN npm install y establece el comando principal con CMD."

Comandos Principales en un Dockerfile

  • FROM: Define la imagen base, que es la base para construir el entorno.
  • WORKDIR: Establece el directorio de trabajo dentro del contenedor.
  • COPY: Copia archivos desde el host al contenedor.
  • RUN: Ejecuta comandos necesarios para configurar la aplicación, como instalar dependencias.
  • CMD: Define el comando principal que se ejecutará cuando el contenedor se inicie.

Construcción de una Imagen desde el Dockerfile

Una vez que se ha escrito el Dockerfile, se puede construir la imagen usando el siguiente comando:

bash
"Este comando construye una imagen utilizando el Dockerfile en el directorio actual. La opción guión t my guión node guión app establece el nombre de la imagen como my-node-app."

Gestión de Imágenes en Docker

Las imágenes en Docker pueden gestionarse con varios comandos que permiten listar, eliminar y optimizar las imágenes almacenadas en el sistema.

Listado de Imágenes

Para ver todas las imágenes disponibles en el sistema, use el comando:

bash
"El comando docker images lista todas las imágenes almacenadas localmente en el sistema, mostrando el nombre, etiqueta y tamaño de cada una."

Eliminación de Imágenes

Para eliminar una imagen que ya no se necesita, utilice el comando docker rmi seguido del nombre o ID de la imagen:

bash
"El comando docker rmi seguido del nombre my-node-app elimina la imagen llamada my-node-app del sistema, liberando espacio."

Reducción de Tamaño de Imágenes

Las imágenes de Docker pueden optimizarse para reducir su tamaño. Algunos consejos incluyen:

  • Utilizar una imagen base ligera, como alpine.
  • Minimizar la cantidad de archivos copiados al contenedor.
  • Unir múltiples comandos RUN en una sola línea para reducir las capas.

Ejemplo de Dockerfile optimizado:

dockerfile
"Este Dockerfile usa la imagen base node catorce guión alpine, que es una versión ligera. Copia solo los archivos package punto json antes de instalar las dependencias, y luego copia el resto del código. Esto reduce el tamaño de la imagen al evitar capas innecesarias."

Ejecución de una Imagen

Una vez creada una imagen, se puede ejecutar en un contenedor usando el comando docker run:

bash
"Este comando ejecuta la imagen my-node-app en un contenedor, mapeando el puerto tres mil en el contenedor al puerto tres mil en el host. El flag d ejecuta el contenedor en segundo plano."

Conclusión

Las imágenes son el núcleo de Docker, ya que encapsulan toda la aplicación y sus dependencias. Con el conocimiento de cómo construir y gestionar imágenes, estamos listos para explorar los contenedores y aprender a optimizar su rendimiento en el próximo capítulo.


Pregúntame lo que sea