~/docs /DOCKER

DOCKER

DOCKER

Imported from Notion: DOCKER

updated:: 2026.07.10

child_page Limpiar todo de Docker Nested page shared through Notion.
child_page Administrar contenedores Nested page shared through Notion.

Acceso a Docker sin sudo

Para ejecutar comandos docker sin sudo, puedes añadir tu usuario al grupo docker. Esto simplifica el flujo de trabajo, pero también amplía los privilegios de ese usuario sobre el motor de Docker, así que conviene usarlo solo si entiendes el impacto en seguridad.

warning

Dar acceso al grupo docker equivale, en la práctica, a conceder privilegios elevados sobre el host. Úsalo con cuidado y solo para cuentas de confianza.

Pasos

  1. Añade tu usuario al grupo docker:
sudo usermod -aG docker $USER
  1. Cierra la sesión y vuelve a iniciarla, o reinicia la terminal para que el cambio tenga efecto.

  2. Verifica que puedes ejecutar docker sin sudo:

docker run hello-world

Conceptos fundamentales de Docker

Entender estos conceptos es clave para trabajar eficazmente con Docker:

  • Imágenes (images): plantillas de solo lectura que contienen las instrucciones para crear un contenedor. Una imagen puede basarse en otra imagen, como una imagen de Ubuntu con Apache preinstalado. Puedes crear imágenes propias con un Dockerfile o usar imágenes públicas de Docker Hub.

  • Contenedores (containers): instancias ejecutables de una imagen. Un contenedor es un proceso aislado en tu sistema que incluye todo lo necesario para ejecutar una aplicación. Puedes iniciarlo, detenerlo, moverlo o eliminarlo.

  • Volúmenes (volumes): forma recomendada de persistir datos generados por contenedores Docker. Se almacenan y gestionan por Docker, lo que permite que los datos sobrevivan al ciclo de vida del contenedor.

  • Redes (networks): permiten que los contenedores se comuniquen entre sí y con el host. Docker crea redes por defecto y también puedes definir redes personalizadas para aislar servicios.

validated

Si estás empezando, piensa en Docker así:

  • Imagen = plantilla
  • Contenedor = instancia en ejecución
  • Volumen = almacenamiento persistente
  • Red = comunicación entre servicios

Comandos básicos de Docker

Aquí tienes los comandos esenciales para empezar:

ComandoQué haceUso típico
docker run [IMAGEN]Crea y ejecuta un contenedor a partir de una imagenProbar una imagen o levantar un servicio
docker imagesLista las imágenes disponibles localmenteVer qué imágenes tienes descargadas
docker rmi [IMAGEN_ID_O_NOMBRE]Elimina una o más imágenesLiberar espacio o limpiar imágenes antiguas

Ejemplos mínimos

docker run -p 80:80 nginx
docker run -d --name mi-aplicacion mi-imagen
info

docker run crea y arranca un contenedor en un solo paso. Para la administración diaria de contenedores ya creados, consulta la guía de Administrar contenedores.


Docker Compose: orquestación de varios contenedores

Cuando una aplicación tiene varios servicios —por ejemplo, web, base de datos y caché— gestionarlos con comandos sueltos puede volverse incómodo. Aquí entra Docker Compose.

¿Qué es Docker Compose?

Docker Compose permite definir y ejecutar aplicaciones multi-contenedor usando un archivo YAML, normalmente docker-compose.yml o compose.yml. Con él describes servicios, redes y volúmenes, y puedes levantarlos o apagarlos como una sola unidad.

Ventajas principales

  • Configuración centralizada: defines toda la pila en un único archivo.

  • Consistencia: el mismo entorno se puede reproducir en desarrollo, pruebas o despliegues.

  • Menos errores manuales: reduce la necesidad de repetir comandos largos.

  • Mejor coordinación entre servicios: facilita la conexión entre contenedores.

Estructura básica de un archivo Compose

Un archivo compose.yml o docker-compose.yml suele incluir:

  • services: define los contenedores de la aplicación.

    • image: imagen a usar.

    • build: ruta al Dockerfile.

    • ports: mapeo de puertos.

    • volumes: persistencia o compartición de archivos.

    • environment: variables de entorno.

    • depends_on: dependencias entre servicios.

    • networks: redes a las que se conecta el servicio.

  • volumes: volúmenes con nombre para persistencia.

  • networks: redes personalizadas.

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    networks:
      - app-network

volumes:
  data:

networks:
  app-network:

Comandos básicos de Compose

docker compose up -d
docker compose down
docker compose up -d --build
docker compose logs -f
docker compose exec app bash
validated

En proyectos pequeños, Compose te ahorra mucho tiempo. En proyectos medianos o grandes, además mejora la reproducibilidad entre equipos.


Buenas prácticas básicas

Puertos

  • Expón solo los puertos que realmente necesites.

  • Usa el mapeo HOST:CONTENEDOR con intención clara.

  • Evita publicar servicios internos si no hace falta.

Volúmenes

  • Usa volúmenes para datos que deban sobrevivir a la eliminación del contenedor.

  • Para datos importantes, evita depender solo del sistema de archivos del contenedor.

docker exec

  • Úsalo para inspeccionar o depurar un contenedor en ejecución.

  • Es útil para abrir una shell, revisar archivos o probar comandos dentro del entorno del contenedor.

Actualización de imágenes

  • Revisa periódicamente si la imagen que usas tiene versiones nuevas.

  • Si trabajas con Compose, reconstruye cuando cambies el Dockerfile o dependencias.

Seguridad

  • Si no necesitas sudo, puedes añadir tu usuario al grupo docker, pero recuerda que eso concede acceso muy amplio al motor de Docker.

  • En entornos compartidos o sensibles, conviene controlar cuidadosamente quién pertenece a ese grupo.


Recursos adicionales

- EOF -