Introducción
Docker es una potente plataforma de contenedorización que ha revolucionado la forma en que los desarrolladores y profesionales de TI gestionan e implementan aplicaciones. En este tutorial, te guiaremos a través del proceso de creación de un contenedor Docker en un sistema Linux, desde la instalación y configuración de Docker hasta la creación y ejecución de tus propios contenedores personalizados.
Entendiendo los Contenedores Docker
Docker es una popular plataforma de código abierto que permite a los desarrolladores construir, implementar y ejecutar aplicaciones en un entorno de contenedorización. Los contenedores son paquetes de software ligeros, autónomos y ejecutables que incluyen todo lo necesario para ejecutar una aplicación, incluyendo el código, el tiempo de ejecución, las herramientas del sistema y las bibliotecas.
¿Qué es un Contenedor Docker?
Un contenedor Docker es una unidad de software estandarizada que empaqueta el código y todas sus dependencias, de modo que la aplicación se ejecute de forma rápida y fiable de un entorno informático a otro. Los contenedores se crean a partir de imágenes Docker, que son los planos para crear contenedores. Los contenedores Docker están aislados entre sí y del sistema operativo host, proporcionando un entorno de tiempo de ejecución consistente y predecible.
Beneficios de los Contenedores Docker
- Portabilidad: Los contenedores Docker se pueden ejecutar en cualquier máquina que tenga Docker instalado, independientemente de la infraestructura subyacente o el sistema operativo.
- Consistencia: Los contenedores Docker garantizan que la aplicación se ejecutará de la misma manera, independientemente del entorno.
- Eficiencia: Los contenedores Docker son ligeros y utilizan menos recursos que las máquinas virtuales, ya que comparten el kernel del sistema operativo host.
- Escalabilidad: Los contenedores Docker se pueden escalar fácilmente hacia arriba o hacia abajo, lo que facilita la gestión e implementación de aplicaciones.
- Aislamiento: Los contenedores Docker están aislados entre sí y del sistema operativo host, mejorando la seguridad y la estabilidad.
Arquitectura de un Contenedor Docker
graph TD
A[Host Docker] --> B[Motor Docker]
B --> C[Imágenes Docker]
B --> D[Contenedores Docker]
D --> E[Aplicación]
D --> F[Bibliotecas]
D --> G[Herramientas del Sistema]
Ciclo de Vida de un Contenedor Docker
- Construcción: Crear una imagen Docker a partir de un Dockerfile.
- Envío: Almacenar la imagen Docker en un registro, como Docker Hub.
- Ejecución: Crear y ejecutar un contenedor Docker a partir de la imagen.
Casos de Uso de los Contenedores Docker
- Microservicios: Los contenedores Docker son adecuados para construir e implementar aplicaciones basadas en microservicios.
- Integración Continua y Entrega Continua (CI/CD): Los contenedores Docker se pueden utilizar para automatizar la construcción, las pruebas y la implementación de aplicaciones.
- Alojamiento en la Nube: Los contenedores Docker se pueden implementar y escalar fácilmente en plataformas en la nube, como AWS, Azure y Google Cloud.
- Aprendizaje Automático y Ciencia de Datos: Los contenedores Docker se pueden utilizar para empaquetar e implementar modelos de aprendizaje automático y tuberías de procesamiento de datos.
Instalación y Configuración de Docker en Linux
Instalación de Docker en Ubuntu 22.04
- Actualiza el índice de paquetes:
sudo apt-get update
- Instala los paquetes necesarios para permitir que
aptutilice un repositorio a través de HTTPS:
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
- Agrega la clave GPG oficial de Docker:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- Configura el repositorio de Docker:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- Instala Docker Engine, containerd y Docker Compose:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Configuración de Docker
- Verifica la instalación de Docker:
sudo docker run hello-world
- Agrega tu usuario al grupo Docker para ejecutar comandos de Docker sin
sudo:
sudo usermod -aG docker $USER
- Configura Docker para que se inicie automáticamente al arrancar el sistema:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
- (Opcional) Configura Docker para usar un controlador de almacenamiento diferente:
sudo vi /etc/docker/daemon.json
Agrega la siguiente configuración y guarda el archivo:
{
"storage-driver": "overlay2"
}
- Reinicia el servicio Docker:
sudo systemctl restart docker
Instalación de Docker Compose
- Descarga la última versión de Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- Haz el binario ejecutable:
sudo chmod +x /usr/local/bin/docker-compose
- Verifica la instalación de Docker Compose:
docker-compose --version
Creación y Ejecución de Contenedores Docker
Creación de Imágenes Docker
- Crea un nuevo directorio para tu proyecto:
mkdir my-docker-project
cd my-docker-project
- Crea un archivo
Dockerfileen el directorio del proyecto:
touch Dockerfile
- Abre el archivo
Dockerfiley añade el siguiente contenido:
## Usa la imagen oficial de Ubuntu 22.04 como base
FROM ubuntu:22.04
## Actualiza el índice de paquetes e instala los paquetes necesarios
RUN apt-get update && apt-get install -y \
nginx \
curl \
&& rm -rf /var/lib/apt/lists/*
## Copia el archivo de configuración predeterminado de Nginx
COPY default.conf /etc/nginx/conf.d/
## Exponer el puerto 80 para Nginx
EXPOSE 80
## Inicia Nginx al arrancar el contenedor
CMD ["nginx", "-g", "daemon off;"]
- Crea un archivo de configuración predeterminado de Nginx
default.conf:
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
- Crea la imagen Docker:
docker build -t my-nginx-app .
Ejecución de Contenedores Docker
- Ejecuta el contenedor Docker:
docker run -d --name my-nginx-app -p 80:80 my-nginx-app
- Verifica que el contenedor se esté ejecutando:
docker ps
- Accede al servidor web Nginx que se ejecuta en el contenedor:
curl http://localhost
Administración de Contenedores Docker
- Detén el contenedor en ejecución:
docker stop my-nginx-app
- Inicia el contenedor detenido:
docker start my-nginx-app
- Elimina el contenedor:
docker rm my-nginx-app
- Elimina la imagen Docker:
docker rmi my-nginx-app
Docker Compose
- Crea un archivo
docker-compose.yml:
version: '3'
services:
web:
build: .
ports:
- "80:80"
- Construye y ejecuta la aplicación Docker Compose:
docker-compose up -d
- Detén y elimina la aplicación Docker Compose:
docker-compose down
Resumen
Al finalizar este tutorial, tendrás una comprensión sólida de Docker y sus capacidades, así como las habilidades prácticas para crear, gestionar y ejecutar contenedores Docker en un sistema Linux. Este conocimiento te permitirá optimizar el despliegue de tus aplicaciones, mejorar la escalabilidad y mejorar tu flujo de trabajo general de DevOps.



