Guía completa para crear y gestionar contenedores Docker

Última actualización:
Autor:
docker
Created with GIMP

Docker se ha convertido en una de las herramientas esenciales en el desarrollo y despliegue de aplicaciones modernas. Su capacidad para crear entornos aislados y consistentes permite a los desarrolladores trabajar sin preocuparse por los problemas típicos de configuración entre distintos sistemas.

En esta guía vas a aprender, paso a paso y con lujo de detalles, cómo crear un contenedor Docker desde cero. Veremos desde la instalación básica hasta la ejecución avanzada usando Docker Compose, pasando por la creación de imágenes personalizadas, el uso de volúmenes, la gestión de contenedores en ejecución y las mejores prácticas para optimizar tu entorno de trabajo.

¿Qué es un contenedor Docker y por qué usarlo?

Un contenedor Docker es una unidad ligera y portátil que contiene una aplicación junto con todas sus dependencias. A diferencia de una máquina virtual, que incluye un sistema operativo completo, los contenedores comparten el núcleo del sistema operativo del host, lo que los hace mucho más rápidos y eficientes.

Gracias a Docker, puedes desarrollar, probar y desplegar tu aplicación en distintos entornos sin preocuparte de las diferencias entre ellos. Esta característica lo convierte en una solución ideal tanto para entornos de producción como para pruebas y desarrollo local.

Requisitos previos para usar Docker

  • Sistema operativo compatible: Ubuntu, Debian, Fedora, CentOS, macOS o Windows.
  • Acceso a privilegios de superusuario (root o sudo) para instalar y ejecutar Docker.
  • Conexión a Internet para descargar imágenes oficiales desde Docker Hub.

Instalación de Docker

Instalar Docker es normalmente sencillo. En Ubuntu, puedes instalarlo con estos comandos:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

Para que Docker se inicie automáticamente al encender el sistema, puedes ejecutarlo así:

sudo systemctl enable docker
sudo systemctl enable containerd

Verificando la instalación

docker

Una vez instalado, puedes verificar que Docker está operativo ejecutando este comando:

docker run hello-world

Este comando descargará una imagen de prueba y mostrará un mensaje confirmando que todo funciona correctamente.

Creación de un contenedor: conceptos básicos

Para crear un contenedor necesitas una imagen Docker, que es un paquete con todos los componentes que necesita tu aplicación. Las imágenes pueden descargarse desde Docker Hub o crearse manualmente.

  Learn how to Restore Lacking Compressed Zip Folder Possibility In Home windows 10

Por ejemplo, para levantar un servidor Nginx básico puedes usar:

docker run --name miweb -p 8080:80 -d nginx

Con esta instrucción:

  • –name miweb: le da un nombre al contenedor.
  • -p 8080:80: redirige el puerto 8080 del host al puerto 80 del contenedor.
  • -d: ejecuta el contenedor en segundo plano.

Creando imágenes personalizadas con Dockerfile

Un Dockerfile te permite construir imágenes personalizadas paso a paso. Cada instrucción en el archivo añade una nueva capa a la imagen final. Aquí tienes un ejemplo sencillo:

FROM ubuntu:latest
WORKDIR /app
COPY . .
RUN apt-get update && apt-get install -y curl
CMD 

Este archivo hace lo siguiente:

  • FROM: usa la última versión de Ubuntu como base.
  • WORKDIR: establece el directorio de trabajo.
  • COPY: copia los archivos del host al contenedor.
  • RUN: instala el paquete curl.
  • CMD: define el comando por defecto cuando se ejecuta el contenedor.

Para construir la imagen con este Dockerfile, puedes consultar la guía en crear imágenes personalizadas con Dockerfile.

Ejecutar un contenedor desde una imagen propia

Una vez construida la imagen, puedes lanzar tu aplicación con:

docker run --name ejemplo -p 8080:80 miproyecto

Así levantas un contenedor a partir de la imagen que acabas de crear.

Gestión de contenedores Docker

Docker proporciona varios comandos para gestionar tus contenedores. Algunos de los más útiles incluyen:

  • docker ps: lista los contenedores en ejecución.
  • docker ps -a: muestra todos los contenedores, incluidos los detenidos.
  • docker stop nombre_contenedor: detiene un contenedor.
  • docker rm nombre_contenedor: elimina un contenedor.

Persistencia de datos: volúmenes en Docker

Por defecto, los datos almacenados dentro de un contenedor se pierden al eliminarlo. Para mantener datos persistentes, es imprescindible montar volúmenes. La utilización de volúmenes asegura que los datos sobrevivan a la eliminación del contenedor y puedan ser compartidos entre ellos.

Ejemplo con volumen tipo bind:

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=clave -v $PWD/data:/var/lib/mysql mysql:8.0

También puedes usar volúmenes gestionados por Docker:

docker volume create mysql_data
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=clave -v mysql_data:/var/lib/mysql mysql:8.0

Variables de entorno

Docker permite configurar variables de entorno que ayudan a parametrizar el comportamiento de los contenedores. Por ejemplo:

docker run -e MYSQL_ROOT_PASSWORD=admin -e MYSQL_DATABASE=tienda mysql:8.0

Asignación de recursos

Puedes limitar el uso de CPU y memoria por parte de un contenedor. Esto es útil para evitar que uno solo consuma todos los recursos del sistema:

docker run --cpus=0.5 --memory=512m miimagen

Orquestación básica con Docker Compose

Docker Compose simplifica la gestión de múltiples contenedores. Define todos los servicios necesarios en un archivo YAML y luego los ejecuta con un simple comando. Para aprender más sobre cómo crear contenedores en Docker utilizando Docker Compose, consulta usar Docker Compose.

  Apple Watch Collection 3 Specs and Options

Ejemplo de docker-compose.yml básico para MySQL:

version: '3'
services:
  mysql:
    image: mysql:8.0
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=proyecto
      - MYSQL_USER=usuario
      - MYSQL_PASSWORD=clave
    volumes:
      - mysql_data:/var/lib/mysql
volumes:
  mysql_data:

Para levantar los servicios:

docker-compose up -d

Buenas prácticas al usar Docker

Para que tus imágenes y contenedores sean eficientes, seguros y fáciles de mantener, sigue estas recomendaciones:

  • Usa imágenes oficiales siempre que sea posible, ya que están auditadas y optimizadas.
  • Mantén tus contenedores ligeros utilizando imágenes base pequeñas y eliminando archivos innecesarios tras la instalación de paquetes.
  • No ejecutes procesos como root, crea un usuario específico dentro del contenedor.
  • Usa volúmenes para guardar datos persistentes y evitar pérdidas ante fallos o actualizaciones.
  • Configura variables sensibles como secretos mediante entornos o archivos .env, para prevenir su exposición en el código fuente.

Ejemplo práctico: desplegar Pandora FMS con Docker

Una aplicación real con varios contenedores es Pandora FMS. Podemos desplegar tanto el servidor como la base de datos con apenas dos comandos si usamos Docker.

Primero, levantamos la base de datos:

docker run --name Pandora_DB -p 3306:3306 -e MYSQL_ROOT_PASSWORD=pandora -e MYSQL_DATABASE=pandora -e MYSQL_USER=pandora -e MYSQL_PASSWORD=pandora -v mysqlvol:/var/lib/mysql -d rameijeiras/pandorafms-percona-base

Después se levanta el servidor de aplicación apuntando a la IP del host:

docker run --name Pandora_app --rm -p 8081:80 -e DBHOST=127.0.0.1 -e DBNAME=pandora -e DBUSER=pandora -e DBPASS=pandora -e DBPORT=3306 -ti rameijeiras/pandorafms-community:740

Con esto ya tendrías una instancia funcional de Pandora FMS en cuestión de minutos.

Docker es una herramienta versátil que transforma la forma en que se despliegan y gestionan aplicaciones. Desde levantar contenedores sencillos para desarrollo hasta entornos complejos con múltiples servicios, su uso mejora la eficiencia, reduce problemas de compatibilidad y facilita la escalabilidad de tus proyectos. Dominar Docker es una inversión que puede marcar la diferencia en la gestión de tus despliegues y desarrollo de aplicaciones.

comandos básicos Docker-0
Artículo relacionado:
Comandos Docker: Guía Completa para Gestionar Contenedores

Deja un comentario