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:

BASH
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:

BASH
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.

BASH
docker pull <IMAGE_NAME:TAG>

Listar las imágenes descargadas.

BASH
docker images

Listar contenedores en ejecución.

BASH
docker ps

Listar todos los contenedores, incluyendo los detenidos.

BASH
docker ps -a

Ejecutar un contenedor a partir de una imagen.

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

Detener un contenedor en ejecución.

BASH
docker stop <CONTAINER_ID>

Iniciar un contenedor detenio.

BASH
docker start <CONTAINER_ID>

Eliminar un contenedor.

BASH
docker rm <CONTAINER_ID>

Eliminar una imagen.

BASH
docker rmi <IMAGE_NAME:TAG>

Atajos y Comandos Adicionales:

Ejecutar comandos dentro de un contenedor en ejecución.

BASH
docker inspect <CONTAINER_ID or IMAGE_NAME:TAG>

Ver los logs de un contenedor.

BASH
docker logs <CONTAINER_ID>

Utilizar Docker Compose para gestionar aplicaciones multi-contenedor.

BASH
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:

BASH
docker pull nginx
  1. Crea y ejecuta un contenedor de Nginx en el puerto 8080:
BASH
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:
BASH
docker ps
  1. Si el contenedor está en ejecución, detenlo utilizando el siguiente comando:
BASH
docker stop <CONTAINER_ID>

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

  1. Elimina el contenedor detenido:
BASH
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.

Code Appendix