Conceptos Clave de Docker
En Docker, una imagen actúa como un template de solo lectura que incluye el sistema de archivos y el entorno de ejecución para aplicaciones. Por ejemplo, una imagen base de Ubuntu proporciona el sistema operativo necesario.
Un contenedor es una instancia aislada creada a partir de una imagen, emulando un entorno Linux ligero con procesos y redes propios. Docker gestiona estos contenedores para ejecutar aplicaciones de manera independiente.
Un repositorio es un almacén centralizado para imágenes, donde cada imagen se distingue mediante etiquetas para versiones o variantes.
Ventajas sobre Máquinas Virtuales
Las máquinas virtuales requieren sistemas operativos completos, lo que aumenta el consumo de recursos y el tiempo de arranque. Docker, al virtualizar a nivel de proceso, ofrece entornos más eficientes y rápidos, ideales para desarrollo y despliegue continuo.
Instalación en Entornos Linux
Para configurar Docker en distribuciones basadas en Debian:
# Actualizar repositorios e instalar dependencias
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# Agregar 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ñadir el repositorio de Docker
echo "deb [arch=amd64 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
# Instalar el motor de Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Verificar la instalación mediante comandos alternativos:
# Comprobar la versión instalada
docker --version
# Mostrar información detallada del sistema Docker
docker system info
Para simplificar el uso sin privilegios de root, añade tu usuario al grupo correspondiente:
sudo usermod -aG docker $USER
newgrp docker # Aplicar cambios sin reiniciar la sesión
Configurar un acelerador de imágenes editando el archivo de configuración:
# Crear o modificar /etc/docker/daemon.json
{
"registry-mirrors": ["https://mirror.example.com"]
}
Reiniciar el servicio para aplicar los cambios:
sudo systemctl restart docker
Ejemplo Práctico de Uso
Inicia un contenedor con una imagen de Redis para probar el funcionamiento básico:
# Descargar y ejecutar un contenedor de Redis en segundo plano
docker run -d --nombre ejemplo-redis -p 6379:6379 redis:latest
# Verificar el contenedor en ejecución
docker ps -f nombre=ejemplo-redis
# Detener y eliminar el contenedor posteriormente
docker stop ejemplo-redis && docker rm ejemplo-redis
Preguntas Frecuentes sobre Docker
- Definición de contenedor: Una unidad empaquetada que incluye código, runtime y dependencias, ejecutándose de forma aislada en el host.
- Diferencia con máquinas virtuales: Los contenedores comparten el kernel del sistema host, reduciendo overhead, mientras que las VMs virtualizan hardware completo.
- Propósito de Dockerfile: Un archivo de texto con instrucciones para construir imágenes de forma reproducible y automatizada.
- Orquestación con Docker Compose: Mediante el uso de
depends_onpara definir el orden de inicio entre servicios en un archivo YAML. - Componentes principales: Docker daemon, cliente CLI, registros de imágenes y el motor de contenedores.
- Comandos esenciales:
docker pspara listar contenedores,docker logspara revisar salidas, ydocker execpara interactuar con contenedores activos. - Ciclo de vida de contenedores: Incluye estados como creado, ejecutando, pausado, detenido y eliminado, gestionados mediante comandos específicos.
- Mecanismos de aislamiento: Docker utiliza namespaces para separar recursos del sistema y cgroups para limitar el uso de CPU y memoria entre contenedores.