Ilustración mostrando contenedores Docker y elementos de programación, reflejando la portabilidad y despliegue de aplicaciones.

En el mundo del desarrollo de software, Docker se ha convertido en una herramienta imprescindible para empaquetar y desplegar aplicaciones de forma rápida y confiable. Gracias a los contenedores, desarrolladores y equipos de DevOps pueden asegurarse de que su software funcione de la misma manera en cualquier entorno, ya sea en la computadora local, en un servidor dedicado o en la nube.

En este artículo aprenderás qué es Docker, por qué los contenedores son tan útiles y cómo comenzar a usarlo para tus propios proyectos.

¿Qué es Docker?

Docker es una plataforma que permite crear, ejecutar y compartir aplicaciones dentro de contenedores. Un contenedor es como un “paquete” ligero que incluye todo lo necesario para que tu aplicación funcione: bibliotecas, dependencias y archivos de configuración.

Ventajas de los contenedores:

  • Portabilidad: Un contenedor puede correr en cualquier lugar donde esté instalado Docker, sin importar el sistema operativo o la infraestructura subyacente.
  • Eficiencia: A diferencia de las máquinas virtuales tradicionales, los contenedores comparten el núcleo (kernel) del sistema operativo, lo que reduce el uso de recursos.
  • Aislamiento: Cada contenedor está aislado, por lo que un fallo o conflicto en una aplicación no afecta a las demás.

Instalación de Docker

En Ubuntu

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# Añade la clave GPG oficial de Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Añade el repositorio estable
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Instala Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

En Windows o macOS

  • Descarga Docker Desktop desde la página oficial de Docker.
  • Sigue el asistente de instalación y, una vez terminado, podrás usar Docker desde la terminal (o Powershell) y también desde la interfaz gráfica de Docker Desktop.

Creando tu Primer Contenedor

“Hola Mundo” con Docker

Para probar que Docker funciona correctamente, ejecuta:

docker run hello-world

Este comando:

  1. Descarga la imagen “hello-world” desde Docker Hub (si no la tienes localmente).
  2. Crea y arranca un contenedor que imprime un mensaje de bienvenida.
  3. Finaliza la ejecución.

Listar Imágenes y Contenedores

Listar imágenes en local:

docker images

Listar contenedores en ejecución:

docker ps

Listar contenedores (incluyendo detenidos):

docker ps -a

Crear tu Propia Imagen con Dockerfile

Para empaquetar una aplicación con Docker, se utiliza un Dockerfile, un archivo de texto que describe paso a paso cómo construir la imagen. Por ejemplo, si tienes una aplicación en Python, podrías crear un Dockerfile así:

# Seleccionamos la imagen base
FROM python:3.9-slim

# Configuramos el directorio de trabajo
WORKDIR /app

# Copiamos el archivo de requerimientos y lo instalamos
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copiamos el resto de archivos de la aplicación
COPY . .

# Exponemos el puerto
EXPOSE 8000

# Comando de inicio (ajusta según tu app)
CMD ["python", "main.py"]

Para construir la imagen:

docker build -t mi-aplicacion:1.0 .

Aquí, -t mi-aplicacion:1.0 es el nombre y la etiqueta (tag) que asignamos a la imagen. El . indica que buscamos el Dockerfile en la carpeta actual.

Para correr tu contenedor:

docker run -d -p 8000:8000 mi-aplicacion:1.0
  • -d ejecuta el contenedor en segundo plano (modo detach).
  • -p 8000:8000 mapea el puerto 8000 del contenedor al puerto 8000 del host.

Manejo de Contenedores y Volúmenes

Detener y Eliminar Contenedores

Detener un contenedor (usando su ID o nombre):

docker stop <container_id>

Eliminar un contenedor

docker rm <container_id>

Volúmenes

Los volúmenes permiten persistir datos fuera del contenedor. Así, si el contenedor se elimina, los datos permanecen. Crear un volumen:

docker volume create mi-volumen

Montarlo en un contenedor:

docker run -d -p 8000:8000 -v mi-volumen:/app/data mi-aplicacion:1.0

Esto hace que la carpeta /app/data use el volumen “mi-volumen” y mantenga los datos incluso si el contenedor se detiene.

Buenas Prácticas

  • Usa imágenes base ligeras: reduce el tamaño final de tu imagen y acelera la descarga.
  • Mantén tu Dockerfile ordenado y añade comentarios para explicar cada instrucción.
  • No guardes secretos (contraseñas, tokens) directamente en el Dockerfile. Utiliza variables de entorno y/o un gestor de secretos.
  • Etiquetas y versionado: etiqueta tus imágenes (mi-aplicacion:1.0) para identificar rápidamente su versión o estado.

Despliegue en Producción

Para entornos productivos, Docker facilita la orquestación con herramientas como Docker Compose o Kubernetes. Esto permite:

  • Gestionar múltiples contenedores (frontend, backend, base de datos).
  • Escalar tu aplicación de forma horizontal agregando réplicas de contenedores.
  • Realizar balanceo de carga automático y despliegues continuos.

Docker revolucionó la forma en que desarrollamos y desplegamos software. Gracias a los contenedores, el mantra “funciona en mi máquina” realmente puede extenderse a cualquier servidor o cloud provider.

Con solo un Dockerfile y un par de comandos, puedes aislar tu aplicación, empaquetar sus dependencias y asegurar que siempre se ejecute de manera idéntica. En este artículo conociste los fundamentos básicos y un ejemplo de cómo crear tu propia imagen. Te invitamos a experimentar y probar diferentes escenarios — desde el desarrollo local hasta despliegues complejos en la nube.

Si tienes dudas o sugerencias, ¡déjalas en los comentarios y continuemos aprendiendo juntos en la Comunidad Capo Digital!

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Instagram