Tutorial de Docker
Docker es un motor de contenedores de aplicaciones de código abierto, basado enel lenguaje Goy de código abierto conforme a la licencia Apache 2.0.
Docker permite a los desarrolladores empaquetar sus aplicaciones y dependencias en un contenedor ligero y portátil, luego publicarlo en cualquier máquina Linux popular, y también permite la virtualización.
Los contenedores utilizan completamente un mecanismo de sandbox y no tienen ninguna interfaz entre ellos (similar a las apps de iPhone). Lo más importante es que la sobrecarga de rendimiento de los contenedores es extremadamente baja.
Desde la versión 17.03, Docker se divide en CE (Community Edition: Edición Comunitaria) y EE (Enterprise Edition: Edición Empresarial). Con la edición comunitaria es suficiente.
¿Quién debería leer este tutorial?
Este tutorial está dirigido a ingenieros de operaciones y desarrolladores de backend. A través de este tutorial, puedes aprender paso a paso el uso de Docker.
Conocimientos que necesita antes de leer este tutorial
Antes de leer este tutorial, necesitas dominar los comandos comunes de Linux. Puedes, a través delTutorial de Linuxde este sitio, aprender los comandos relacionados.
Escenarios de aplicación de Docker
Arquitectura de microservicios:Cada servicio se conteneriza de forma independiente, lo que facilita la gestión y la escalabilidad.
Tubería CI/CD:Integración con Jenkins/GitLab CI para lograr compilación y pruebas automatizadas.
Estandarización del entorno de desarrollo:Los nuevos miembros inician con un solo clic todo el conjunto de servicios dependientes (como bases de datos, colas de mensajes).
Base nativa de la nube:Herramientas de orquestación como Kubernetes gestionan clústeres de contenedores basados en Docker.
Ventajas principales
- Consistencia multiplataforma:Resuelve el problema de "funciona en mi máquina", garantizando coherencia entre los entornos de desarrollo, prueba y producción.
- Eficiencia de recursos:Los contenedores comparten directamente el núcleo del host, sin necesidad de virtualizar todo el sistema operativo, ahorrando memoria y CPU.
- Implementación rápida:Inicio de contenedores en segundos, con soporte para autoescalado horizontal.
- Aislamiento:Cada contenedor tiene su propio sistema de archivos, red y espacio de procesos independientes.
Conceptos clave
- Contenedor:Instancia de ejecución ligera que incluye el código de la aplicación, el entorno de ejecución y las bibliotecas de dependencias. Se crea a partir de una imagen, aislada de otros contenedores y comparte el núcleo del sistema operativo del host (más eficiente que una máquina virtual).
- Imagen:Plantilla de solo lectura que define el entorno de ejecución del contenedor (como sistema operativo, configuración de software, etc.). Optimiza el espacio y la velocidad de construcción mediante almacenamiento por capas (Layer).
- Dockerfile:Archivo de texto que describe cómo construir la imagen automáticamente (por ejemplo, especificar la imagen base, instalar software, copiar archivos, etc.).
- Registro (Registry):Plataforma para almacenar y distribuir imágenes, como Docker Hub (repositorio público oficial) o repositorios privados (como Harbor).
Comandos básicos
Ejemplos
docker pull nginx
# Ejecutar contenedor (-d en segundo plano, -p mapear puerto)
docker run -d -p 80:80 nginx
# Ver contenedores en ejecución
docker ps
# Construir imagen (basada en el Dockerfile del directorio actual)
docker build -t my-app .
# Entrar al interior del contenedor
docker exec -it <ID del contenedor> /bin/bash
Enlaces relacionados
Sitio web oficial de Docker:https://www.docker.com
Código fuente de Docker en GitHub:https://github.com/docker
Otras extensiones