Tutorial de Docker

Docker es un motor de contenedores de aplicaciones de código abierto, basado enel lenguaje Goy de código abierto bajo la licencia Apache2.0.

Docker permite a los desarrolladores empaquetar sus aplicaciones y dependencias en un contenedor ligero y portátil, y luego publicarlo en cualquier máquina Linux popular, también puede lograr la virtualización.

Los contenedores utilizan completamente el mecanismo de sandbox, no hay interfaces entre ellos (similar a las apps de iPhone), y lo más importante, el costo de rendimiento de los contenedores es extremadamente bajo.

Desde la versión 17.03, Docker se divide en CE (Community Edition: Edición Comunitaria) y EE (Enterprise Edition: Edición Empresarial), podemos usar la edición comunitaria.


¿Quién debería leer este tutorial?

Este tutorial es adecuado para ingenieros de operaciones y desarrolladores de backend; a través de este tutorial puedes aprender paso a paso el uso de Docker.


Conocimientos que necesitas antes de leer este tutorial

Antes de leer este tutorial, necesitas dominar los comandos comunes de Linux. Puedes aprenderlos a través delTutorial de Linuxde este sitio.


Casos de uso de Docker

  • Arquitectura de microservicios:Cada servicio se conteneriza de forma independiente, lo que facilita la gestión y la expansión.

  • Pipeline de 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", asegurando consistencia entre los entornos de desarrollo, prueba y producción.
  • Eficiencia de recursos:Los contenedores comparten directamente el kernel del host, sin necesidad de virtualizar todo el sistema operativo, ahorrando memoria y CPU.
  • Implementación rápida:Los contenedores se inician en segundos y admiten escalado automático.
  • 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 código de aplicación, entorno de ejecución y bibliotecas de dependencias. Se crea a partir de una imagen, aislada de otros contenedores, compartiendo el kernel del sistema operativo del host (más eficiente que las máquinas virtuales).
  • 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 en capas (Layer).
  • Dockerfile:Archivo de texto que describe cómo construir automáticamente la imagen (por ejemplo, especificar imagen base, instalar software, copiar archivos, etc.).
  • Repositorio (Registry):Plataforma para almacenar y distribuir imágenes, como Docker Hub (repositorio público oficial) o repositorios privados (como Harbor).

Comandos básicos

Ejemplos

# Descargar imagen (por ejemplo, la imagen oficial de Nginx)
docker pull nginx

# Ejecutar contenedor (-d: ejecución en segundo plano, -p: mapear puertos)
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