Setup mínimo para correr Docker y docker compose con un API en Flask
Docker es una plataforma de contenedores que permite empaquetar aplicaciones y sus dependencias en contenedores, lo que facilita la implementación y la gestión de aplicaciones en diferentes entornos. Este tutorial te guiará a través de los conceptos básicos de Docker y te mostrará cómo empezar a trabajar con contenedores.
Para comenzar a usar Docker, primero debes instalarlo en tu sistema. Sigue estos pasos según tu sistema operativo:
- Descarga Docker Desktop desde el sitio web oficial de Docker.
- Instala Docker Desktop siguiendo las instrucciones de instalación.
En Linux, puedes instalar Docker a través de la línea de comandos. Los pasos varían según la distribución, así que consulta la documentación oficial para tu distribución específica.
Para nuestro curso, recomendamos trabajar en un ambiente Unix, preferiblemente Ubuntu o Debian. En cualquier caso, escribimos un archivo de instalación que instala todo lo que necesitan y configura todo para su usuario actual. Recomiendo leer cada paso en el caso de que estén interesados pero no es necesario.
Para instalar, basta con ejecutar los siguientes comandos:
cd instalacion/docker
sh install.sh
Una vez que hayas instalado Docker, verifica que se haya instalado correctamente ejecutando el siguiente comando en la terminal:
docker --version
Deberías ver la versión de Docker instalada.
Ahora que Docker está instalado y funcionando, puedes ejecutar tu primer contenedor. Aquí hay un ejemplo simple para ejecutar un contenedor de Ubuntu:
docker run -it ubuntu
Este comando descargará la imagen de Ubuntu desde el registro de Docker (si aún no está descargada) y ejecutará un contenedor interactivo. Puedes ejecutar comandos dentro del contenedor como lo harías en una máquina virtual.
-
Listar contenedores en ejecución:
docker ps
-
Listar todos los contenedores (incluyendo los detenidos):
docker ps -a
-
Detener un contenedor en ejecución:
docker stop <container_id>
-
Eliminar un contenedor:
docker rm <container_id>
Crearemos un contenedor que ejecuta un script de Python que imprime "Hola, Mundo!".
-
Crea una carpeta para tu proyecto y coloca tu script Python en ella. Asegúrate de que el script se llame
hello.py
y contenga el siguiente código:print("Hola, Mundo!")
-
Crea un archivo llamado
Dockerfile
(sin extensión) en la misma carpeta donde se encuentra tu script. ElDockerfile
contendrá las instrucciones para construir la imagen de Docker. Aquí está el contenido delDockerfile
:# Usa una imagen base de Python FROM python:3.11 # Establece el directorio de trabajo en el contenedor WORKDIR /app # Copia el script Python al contenedor COPY hello.py . # Ejecuta el script cuando el contenedor se inicie CMD ["python", "hello.py"]
Este
Dockerfile
utiliza la imagen oficial de Python 3.8 como base y establece el directorio de trabajo en/app
. Luego, copia el scripthello.py
al contenedor y especifica que debe ejecutarse cuando se inicie el contenedor. -
Abre una terminal en la misma carpeta donde se encuentran el
Dockerfile
yhello.py
y construye la imagen con el siguiente comando:docker build -t mi-imagen-python .
Esto construirá una imagen llamada
mi-imagen-python
a partir delDockerfile
y los archivos en el directorio actual (.
). -
Una vez que la imagen se haya construido, puedes ejecutar un contenedor basado en esta imagen con el siguiente comando:
docker run mi-imagen-python
El contenedor se iniciará y ejecutará el script Python, lo que imprimirá "Hola, Mundo!" en la salida.
¡Eso es todo! Has creado una imagen de Docker para una aplicación simple de Python y ejecutado un contenedor a partir de esa imagen. Puedes personalizar el script y el
Dockerfile
según tus necesidades para crear contenedores con aplicaciones de Python más complejas.
Puedes publicar tus imágenes de Docker en Docker Hub u otros registros de contenedores para compartir con otros. Primero, debes etiquetar tu imagen con tu nombre de usuario en Docker Hub:
docker tag mi-imagen-python nombre_de_usuario/mi-imagen-python
Luego, puedes subir tu imagen:
docker push nombre_de_usuario/mi-imagen-python
Otros usuarios pueden descargar tu imagen desde el registro y ejecutarla en sus sistemas.
Docker Compose es una herramienta que facilita la gestión de aplicaciones multi-contenedor. Te permite definir la configuración de tus servicios, redes y volúmenes en un archivo YAML llamado docker-compose.yml
y luego iniciar todos los contenedores y recursos relacionados con un solo comando.
Docker Compose generalmente se instala automáticamente junto con Docker Desktop en sistemas Windows y macOS. Sin embargo, en sistemas Linux, es posible que debas instalarlo por separado. Puedes descargar la última versión de Docker Compose desde el sitio web oficial de Docker Compose.
Para comenzar a usar Docker Compose, crea un archivo llamado docker-compose.yml
en el directorio de tu proyecto. En este archivo, puedes definir la configuración de tus servicios, redes y volúmenes. Aquí hay un ejemplo de un docker-compose.yml
simple para ejecutar una aplicación web de Python con una base de datos:
version: '3'
services:
web:
image: mi-imagen-python # Utiliza la imagen que creaste anteriormente
ports:
- "8000:8000"
db:
image: postgres:12
environment:
POSTGRES_PASSWORD: mi-contraseña
En este ejemplo, hemos definido dos servicios: uno llamado "web" que utiliza la imagen de Python que creamos previamente, y otro llamado "db" que utiliza una imagen oficial de PostgreSQL. También hemos mapeado el puerto 8000 del contenedor "web" al puerto 8000 del host.
Una vez que hayas definido tu archivo docker-compose.yml
, puedes iniciar todos los contenedores y servicios relacionados con el siguiente comando en el directorio de tu proyecto:
docker-compose up
Docker Compose descargará las imágenes necesarias, creará las redes y volúmenes si es necesario, y ejecutará los contenedores según la configuración especificada en el archivo docker-compose.yml
.
Puedes detener y eliminar los contenedores y recursos relacionados con Docker Compose utilizando el siguiente comando:
docker-compose down
Este comando detendrá y eliminará todos los contenedores, redes y volúmenes creados por el proyecto de Docker Compose.
Docker Compose simplifica la gestión de aplicaciones Docker con múltiples contenedores, lo que facilita la definición y ejecución de aplicaciones complejas. Puedes personalizar tu archivo docker-compose.yml
para satisfacer las necesidades específicas de tu proyecto.
- Basado en A simple Python app for Docker's Python Language Guide.