Docker

Docker

Docker es una plataforma que permite desarrollar, enviar y ejecutar aplicaciones en contenedores. Un contenedor es una instancia ejecutable de una imagen, que es una especie de plantilla que contiene todo lo necesario para ejecutar una aplicación.

Haciendo una analogía con los contenedores de transporte, una imagen sería el contenedor en sí, y el contenedor sería la carga que se transporta.

Docker resuelve un problema principal en el desarrollo de software: la portabilidad. Al empaquetar una aplicación y sus dependencias en un contenedor, se garantiza que la aplicación se ejecute de manera consistente en diferentes entornos.

En esta lección, aprenderemos a crear y ejecutar contenedores Docker, y a utilizarlos para ejecutar aplicaciones de manera aislada y portátil.

Con docker se acaba la frase típica de los desarrolladores En mi máquina funciona. Con Docker, puedes estar seguro de que tu aplicación funcionará de la misma manera en cualquier entorno.

Una imagen Docker es una plantilla inmutable que contiene un conjunto de instrucciones para crear un contenedor Docker. Las imágenes son portátiles y pueden ser compartidas, almacenadas y actualizadas.

Tip

Las imágenes Docker son inmutables, lo que significa que no se pueden modificar una vez creadas. Si se realizan cambios en una imagen, se debe crear una nueva versión de la imagen.

Un contenedor Docker es una instancia ejecutable de una imagen Docker. Se ejecuta de manera aislada y contiene todo lo necesario para ejecutar la aplicación, incluyendo el código, las dependencias, el entorno de ejecución, las bibliotecas y los archivos de configuración.

Tip

Un contenedor aisla la aplicación de su entorno, lo que garantiza que la aplicación se ejecute de manera consistente en diferentes entornos.

Ejemplos:

Descargar una imagen:

docker pull docker/getting-started

Este comando descarga la imagen getting-started desde el registro público de Docker.

Correr un contenedor en el puerto 80:

docker run -d -p 80:80 docker/getting-started

Este comando ejecuta un contenedor desenlazado en segundo plano (-d) y mapea el puerto 80 de la máquina host al puerto 80 del contenedor (-p 80:80).

Descargar una imagen desde un registro.

Tip

El comando -p se utiliza para mapear los puertos de la máquina host al contenedor, muchas personas consideran que significa “puerto”. Sin embargo en realidad significa “publicar” o “publicar puerto”.

Comandos básicos de Docker:

Descargar una imagen desde un registro.

docker pull <IMAGE_NAME:TAG>

Listar las imágenes descargadas.

docker images

Listar contenedores en ejecución.

docker ps

Listar todos los contenedores, incluyendo los detenidos.

docker ps -a

Ejecutar un contenedor a partir de una imagen.

docker run -d -p <HOST_PORT>:<CONTAINER_PORT> <IMAGE_NAME:TAG>

Detener un contenedor en ejecución.

docker stop <CONTAINER_ID>

Iniciar un contenedor detenio.

docker start <CONTAINER_ID>

Eliminar un contenedor.

docker rm <CONTAINER_ID>

Eliminar una imagen.

docker rmi <IMAGE_NAME:TAG>

Atajos y Comandos Adicionales:

Ejecutar comandos dentro de un contenedor en ejecución.

docker inspect <CONTAINER_ID or IMAGE_NAME:TAG>

Ver los logs de un contenedor.

docker logs <CONTAINER_ID>

Utilizar Docker Compose para gestionar aplicaciones multi-contenedor.

docker-compose up -d

Práctica:

  • Descarga la imagen de Nginx desde el registro público.
  • Crea y ejecuta un contenedor de Nginx en el puerto 8080.
  • Detén y elimina el contenedor creado
  • Utiliza los comandos para detener y eliminar un contenedor.
Resolución de la Actividad Práctica
  1. Abre tu terminal o línea de comandos.
  2. Descarga la imagen de Nginx desde el registro público de Docker:
docker pull nginx
  1. Crea y ejecuta un contenedor de Nginx en el puerto 8080:
docker run -d -p 8080:80 nginx

Elige un puerto en tu máquina local (por ejemplo, 8080) para mapearlo al puerto 80 del contenedor.

  1. Verifica que el contenedor esté en ejecución:
docker ps
  1. Si el contenedor está en ejecución, detenlo utilizando el siguiente comando:
docker stop <CONTAINER_ID>

Reemplaza con el ID real del contenedor que obtuviste en el paso anterior.

  1. Elimina el contenedor detenido:
docker rm <CONTAINER_ID>

Reemplaza con el ID real del contenedor.

Tip

Combina los comandos docker ps, docker stop, y docker rm para gestionar contenedores eficientemente.

¡Practica estos pasos para familiarizarte con el ciclo de vida de los contenedores Docker!

Conclusiones

En esta lección aprendimos sobre la creación y uso de módulos en Python, así como la creación y ejecución de contenedores Docker. Los módulos son archivos que contienen funciones y variables que pueden ser reutilizadas en otros programas. Los contenedores Docker son instancias ejecutables de imágenes que contienen todo lo necesario para ejecutar una aplicación.