Conceptos Esenciales de Docker para Principiantes

¿Qué es Docker?

Docker es una plataforma de código abierto que permite empaquetar aplicaciones y sus dependencias en contenedores ligeros. Estos contenedores se ejecutan de manera aislada en cualquier sistema Linux, facilitando la implementación consistente en múltiples entornos. Por ejemplo, al tener tres contenedores ejecutando nginx, PHP y MySQL en una máquina, puede replicarse fácilmente esa configuración en otras máquinas mediante comandos sencillos.

Ventajas de Utilizar Docker

Optimización de Recursos

Los contenedores evitan la sobrecarga de la virtualización de hardware, lo que permite un uso más eficiente de la CPU, memoria y almacenamiento, ejecutando más aplicaciones en el mismo equipo.

Inicio Rápido

A diferencia de las máquinas virtuales, los contenedores arrancan en segundos o milisegundos al aprovechar directamente el kernel del host, acelerando los ciclos de desarrollo y despliegue.

Entorno Consistente

Las imágenes de Docker garantizan que las aplicaciones se ejecuten en el mismo entorno desde desarrollo hasta producción, eliminando problemas comunes como "funciona en mi máquina".

Integración y Despliegue Continuo

Con Dockerfile, se pueden crear imágenes de forma transparente, integrándose con sistemas de integración continua para automatizar pruebas y despliegues en producción.

Portabilidad Simplificada

Las aplicaciones empaquetadas en contenedores se transfieren sin problemas entre plataformas como máquinas virtuales, nubes privadas o públicas, sin conflictos de entorno.

Mantenimiento y Escalabilidad

El almacenamiento por capas y las imágenes base permiten reutilizar componentes, simplificando la creación de nuevas versiones y reduciendo costos operativos.

Característica Contenedor Máquina Virtual
Tiempo de Arranque Segundos Minutos
Uso de Disco Megabytes Gigabytes
Rendimiento Cercano al Nativo Reducido
Capacidad por Host Miles de Contenedores Decenas de VMs

Instalación de Docker

Para instalar Docker en un sistema Linux basado en CentOS, siga estos pasos modificados para evitar conflictos con versiones anteriores.

# Eliminar versiones previas de Docker
yum -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# Instalar paquetes requeridos
yum install -y yum-utils device-mapper-persistent-data lvm2
# Configurar repositorio alternativo desde un espejo
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Listar versiones disponibles de Docker
yum list docker-ce --showduplicates | sort -r
# Instalar una versión específica de Docker
yum install docker-ce-20.10.7 -y
# Configurar fuentes de imágenes usando un archivo de configuración
echo '{"registry-mirrors": ["https://mirror.example.com"]}' > /etc/docker/daemon.json
# Iniciar el servicio de Docker
systemctl start docker
# Habilitar Docker para que inicie con el sistema
systemctl enable docker

Conceptos Clave de Docker

Imágenes

Una imagen es una plantilla inmutable que contiene los binarios y configuraciones necesarios para ejecutar una aplicación, como un entorno Ubuntu con Apache instalado. Se pueden descargar de repositorios o crear mediante Dockerfile, similar a un archivo maestro que permite instalar múltiples instancias.

Contenedores

Los contenedores son instancias en ejecución de una imagen, gestionados como objetos con ciclos de vida independientes. Pueden crearse, iniciarse, detenerse o eliminarse, funcionando como sistemas operativos individuales dentro del host.

Repositorios

Los repositorios almacenan imágenes de Docker y se pueden alojar en servicios públicos como Docker Hub o en registros privados. Cada imagen dentro de un repositorio se identifica mediante etiquetas para versiones específicas.

Dockerfile

Es un archivo de texto que define instrucciones para construir una imagen de Docker, capa por capa, especificando comandos como la instalación de paquetes o la configuración de variables de entorno.

Docker Compose

Esta herramienta permite definir y ejecutar aplicaciones con múltiples contenedores mediante un archivo YAML, simplificando la orquestación de servicios como bases de datos y servidores web en entornos complejos.

Comandos Fundamentales de Docker

Gestión de Repositorios

# Descargar una imagen desde un repositorio
docker pull usuario/imagen:v1.0
# Subir una imagen local a un repositorio
docker push usuario/imagen:v1.0

Administración de Imágenes

# Listar todas las imágenes locales
docker image ls
# Eliminar una imagen específica
docker image rm usuario/imagen:v1.0
# Construir una imagen desde un Dockerfile en el directorio actual
docker build -t nombre_imagen .
# Visualizar el historial de capas de una imagen
docker history nombre_imagen

Operaciones con Contenedores

# Mostrar contenedores en ejecución
docker container ls
# Listar todos los contenedores, incluyendo los detenidos
docker container ls -a
# Crear y ejecutar un contenedor en segundo plano
docker run -d --name contenedor_app nginx:latest
# Acceder a un contenedor en ejecución con un shell interactivo
docker exec -it contenedor_app /bin/bash
# Detener un contenedor
docker container stop contenedor_app
# Eliminar un contenedor
docker container rm contenedor_app
# Convertir un contenedor en una nueva imagen
docker commit contenedor_app nueva_imagen:v1

Configuración de Redes

# Mostrar redes de Docker disponibles
docker network ls
# Crear una red personalizada con subred definida
docker network create --subnet=192.168.50.0/24 red_personalizada
# Ejecutar un contenedor en una red específica con IP asignada
docker run -d --network=red_personalizada --ip=192.168.50.10 --name contenedor_red alpine:latest

Exportación e Importación

# Exportar el sistema de archivos de un contenedor a un archivo tar
docker export contenedor_app > respaldo_contenedor.tar
# Importar un archivo tar como una nueva imagen
docker import respaldo_contenedor.tar imagen_recuperada:v1
# Guardar una imagen en un archivo tar para respaldo
docker save nombre_imagen > imagen_respaldo.tar
# Cargar una imagen desde un archivo tar
docker load < imagen_respaldo.tar

Etiquetas: Docker contenedores imagenes dockerfile docker-compose

Publicado el 5-30 08:15