Cómo configurar un entorno de desarrollo Docker en macOS o Windows

DockerBeginner
Practicar Ahora

Introducción

Docker se ha convertido en una herramienta esencial para los desarrolladores, permitiéndoles crear y gestionar aplicaciones contenedorizadas con facilidad. Este tutorial te guiará a través del proceso de configurar un entorno de desarrollo Docker en macOS o Windows, asegurándote de tener las herramientas y el conocimiento necesarios para comenzar a construir y desplegar aplicaciones basadas en Docker.

Comprensión de los Conceptos Básicos de Docker

¿Qué es Docker?

Docker es una plataforma de código abierto que permite a los desarrolladores construir, desplegar y ejecutar aplicaciones en un entorno consistente e aislado llamado contenedores. Los contenedores empaquetan una aplicación y todas sus dependencias, asegurando que la aplicación se ejecutará de forma fiable e ininterrumpida independientemente de la infraestructura subyacente.

Contenedores Docker

Un contenedor Docker es un paquete ligero, autónomo y ejecutable que incluye todo lo necesario para ejecutar una aplicación: el código, el tiempo de ejecución, las herramientas del sistema y las bibliotecas. Los contenedores están aislados entre sí y del sistema operativo host, proporcionando un entorno consistente y fiable para que la aplicación se ejecute.

graph LR A[Aplicación] --> B[Dependencias] B --> C[Tiempo de ejecución] C --> D[SO] D --> E[Contenedor Docker] E --> F[Host Docker]

Imágenes Docker

Las imágenes Docker son los componentes básicos de los contenedores. Una imagen es una plantilla de solo lectura que contiene las instrucciones para crear un contenedor Docker. Las imágenes se crean utilizando un Dockerfile, que es un archivo de texto que contiene todos los comandos necesarios para construir la imagen.

Registro Docker

Docker Registry es un sistema de almacenamiento y distribución para imágenes Docker. El registro público más popular es Docker Hub, que proporciona una amplia colección de imágenes preconstruidas para diversas aplicaciones y servicios.

Arquitectura de Docker

Docker utiliza una arquitectura cliente-servidor, donde el cliente Docker se comunica con el demonio Docker, que es responsable de construir, ejecutar y gestionar los contenedores Docker.

Componente Descripción
Cliente Docker La interfaz de usuario del sistema Docker. Permite a los usuarios interactuar con el demonio Docker.
Demonio Docker El proceso de fondo que gestiona los contenedores e imágenes Docker.
Registro Docker Un repositorio para almacenar y distribuir imágenes Docker.
Red Docker Permite que los contenedores se comuniquen entre sí y con el mundo exterior.
Volúmenes Docker Proporciona una forma de persistir los datos generados y utilizados por los contenedores Docker.

Instalación de Docker en macOS o Windows

Instalación de Docker en macOS

  1. Visita el sitio web de Docker y descarga Docker Desktop para Mac.
  2. Ejecuta el instalador y sigue las instrucciones en pantalla para completar la instalación.
  3. Una vez instalado, el icono de Docker aparecerá en la barra de menú, indicando que Docker se está ejecutando.

Instalación de Docker en Windows

  1. Visita el sitio web de Docker y descarga Docker Desktop para Windows.
  2. Ejecuta el instalador y sigue las instrucciones en pantalla para completar la instalación.
  3. Una vez instalado, el icono de Docker aparecerá en la bandeja del sistema, indicando que Docker se está ejecutando.

Verificación de la Instalación

Después de instalar Docker, puedes verificar la instalación abriendo una terminal (macOS) o PowerShell (Windows) y ejecutando el siguiente comando:

docker version

Esto mostrará la versión del cliente Docker y el servidor Docker (daemon) instalado en tu sistema.

Instalación de Docker Compose

Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multicontenedor. Para instalar Docker Compose:

  1. Visita el repositorio de Docker Compose en GitHub y descarga la última versión de Docker Compose para tu sistema operativo.
  2. Haz que el archivo descargado sea ejecutable ejecutando el siguiente comando (para Linux/macOS):
    chmod +x docker-compose
  3. Mueve el binario de Docker Compose a un directorio en la ruta de acceso de tu sistema, como /usr/local/bin/ o ~/bin/.

Ahora puedes verificar la instalación ejecutando:

docker-compose version

Esto mostrará la versión de Docker Compose instalada en tu sistema.

Creación de Entornos de Desarrollo con Docker

Creación de un Dockerfile

Un Dockerfile es un archivo de texto que contiene todos los comandos necesarios para construir una imagen Docker. Aquí hay un ejemplo de Dockerfile para una sencilla aplicación web Python:

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]

Este Dockerfile:

  1. Parte de la imagen base python:3.9-slim.
  2. Establece el directorio de trabajo en /app.
  3. Copia el archivo requirements.txt al directorio de trabajo.
  4. Instala las dependencias Python listadas en requirements.txt.
  5. Copia el código de la aplicación al directorio de trabajo.
  6. Especifica el comando para ejecutar la aplicación (python app.py).

Construcción de una Imagen Docker

Para construir una imagen Docker a partir del Dockerfile, ejecuta el siguiente comando en el mismo directorio que el Dockerfile:

docker build -t my-python-app .

Esto construirá una imagen Docker con la etiqueta my-python-app.

Ejecución de un Contenedor Docker

Para ejecutar un contenedor Docker a partir de la imagen my-python-app, utiliza el siguiente comando:

docker run -p 8080:8080 my-python-app

Esto iniciará un nuevo contenedor y mapeará el puerto 8080 del host al puerto 8080 dentro del contenedor.

Desarrollo con Docker Compose

Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multicontenedor. Aquí hay un ejemplo de archivo docker-compose.yml para una sencilla aplicación web con una base de datos:

version: "3"
services:
  web:
    build: .
    ports:
      - 8080:8080
    depends_on:
      - db
  db:
    image: postgres:13
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: myapp
      POSTGRES_PASSWORD: secret
    volumes:
      - db-data:/var/lib/postgresql/data
volumes:
  db-data:

Este archivo docker-compose.yml define dos servicios: web y db. El servicio web construye una imagen Docker desde el directorio actual y mapea el puerto 8080 del host al puerto 8080 dentro del contenedor. El servicio db utiliza la imagen oficial de PostgreSQL y configura una base de datos para la aplicación.

Para iniciar la aplicación, ejecuta:

docker-compose up -d

Esto iniciará los contenedores web y db en segundo plano.

Resumen

Siguiendo este tutorial, aprenderás a instalar Docker en tu máquina macOS o Windows, comprenderás los fundamentos de Docker y crearás un entorno de desarrollo Docker adaptado a tus necesidades. Con estas habilidades, podrás optimizar tu flujo de trabajo de desarrollo y aprovechar los beneficios que ofrece Docker, como entornos consistentes y reproducibles, despliegue sencillo y escalabilidad mejorada.