Guía completa de Docker

Guía completa de Docker en español para comprender contenedores, imágenes, Dockerfile, redes, volúmenes y Docker Compose. Instalación, prácticas y seguridad.

2 sept 2025 • 8 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

Guía completa de Docker en español

Introducción a Docker

Docker es una plataforma de contenedores que empaqueta aplicaciones y sus dependencias en unidades ligeras y portables. Así garantizas consistencia entre entornos, aislamiento, eficiencia al compartir el kernel del sistema operativo, portabilidad y escalado sencillo.

Beneficios clave

Consistencia de ejecución en cualquier entorno. Portabilidad total donde Docker esté instalado. Arranque veloz y menor consumo que máquinas virtuales. Escalabilidad simple y segura gracias al aislamiento.

Contenedores vs máquinas virtuales

Los contenedores comparten el kernel del host, son ligeros en MB, arrancan rápido y usan recursos de forma más eficiente. Las máquinas virtuales incluyen un sistema operativo completo, pesan GB, inician más lento y tienen mayor sobrecarga.

Arquitectura de Docker

Componentes núcleo: Cliente Docker con el comando docker, Daemon dockerd que gestiona contenedores, Imágenes de solo lectura como plantillas, Contenedores como instancias de imágenes y Registro para almacenar imágenes como Docker Hub u otros.

Instalación

Linux Ubuntu o Debian

Actualizar índice: sudo apt-get update

Instalar prerequisitos: sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

Añadir clave GPG de Docker: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Agregar repositorio estable de Docker para tu versión de Ubuntu con lsb_release -cs y el archivo docker.list en sources.list.d

Instalar Docker: sudo apt-get update y luego sudo apt-get install docker-ce docker-ce-cli containerd.io

Agregar tu usuario al grupo docker: sudo usermod -aG docker USUARIO

macOS

Con Homebrew: brew install --cask docker

Windows

Instala Docker Desktop desde el sitio oficial y sigue el asistente.

Verificar instalación

docker --version y docker run hello-world

Imágenes de Docker

Las imágenes son plantillas de solo lectura construidas por capas a partir de un Dockerfile.

Comandos básicos de imágenes

Listar imágenes: docker images o docker image ls

Descargar imagen: docker pull ubuntu:20.04 o docker pull nginx:alpine

Eliminar imagen: docker rmi ubuntu:20.04 o docker image rm nginx:alpine

Construir imagen: docker build -t miapp:1.0 .

Historial: docker history ubuntu:20.04

Inspección: docker inspect ubuntu:20.04

Búsqueda: docker search nginx

Convención de nombres

registro-opcional usuario repositorio:tag por ejemplo nginx:latest, ubuntu:20.04, gcr.io proyecto mi-app:v1.0 o localhost:5000/miapp:dev

Contenedores de Docker

Los contenedores son instancias en ejecución de imágenes.

Ciclo de vida

Ejecutar contenedor: docker run ubuntu:20.04

Modo desacoplado: docker run -d nginx:alpine

Modo interactivo: docker run -it ubuntu:20.04 /bin/bash

Listar en ejecución: docker ps, listar todos: docker ps -a

Detener: docker stop id_contenedor o nombre_contenedor

Iniciar detenido: docker start id_contenedor

Reiniciar: docker restart id_contenedor

Eliminar: docker rm id_contenedor y para todos docker rm $(docker ps -aq)

Ejecutar comando dentro: docker exec -it id_contenedor /bin/bash

Opciones útiles

Mapeo de puertos: docker run -p 8080:80 nginx

Montaje de volúmenes: docker run -v ruta_host:ruta_contenedor ubuntu

Variables de entorno: docker run -e MI_VAR=valor ubuntu

Nombre personalizado: docker run --name mi_contenedor ubuntu

Límites de recursos: docker run -m 512m --cpus=1.5 ubuntu

Gestión de contenedores

Logs: docker logs id_contenedor y seguimiento con docker logs -f id_contenedor

Estadísticas: docker stats o docker stats id_contenedor

Procesos: docker top id_contenedor

Inspección: docker inspect id_contenedor

Copiar archivos: docker cp archivo.txt id_contenedor:/ruta/archivo.txt y docker cp id_contenedor:/ruta/archivo.txt ./archivo.txt

Dockerfile

Un Dockerfile es un conjunto de instrucciones para construir una imagen. Instrucciones típicas: FROM para base, RUN para ejecutar comandos, COPY para copiar, WORKDIR para definir directorio, EXPOSE para puertos, ENV para variables, USER para cambiar usuario, CMD o ENTRYPOINT para el proceso principal.

Ejemplo resumido

FROM ubuntu:20.04

WORKDIR /app

RUN apt-get update && apt-get install -y python3 python3-pip && rm -rf /var/lib/apt/lists/*

COPY . .

RUN pip3 install -r requirements.txt

EXPOSE 8000

USER appuser

CMD python3 app.py

Compilaciones multi etapa

Usa una imagen pesada para construir dependencias y otra mínima para producción. Copia solo lo necesario desde la fase builder para reducir tamaño y superficie de ataque.

Construcción de imágenes

Build estándar: docker build -t miapp:1.0 .

Especificar Dockerfile: docker build -f Dockerfile.prod -t miapp:prod .

Argumentos de build: docker build --build-arg VERSION=1.0 -t miapp .

Sin caché: docker build --no-cache -t miapp .

Volúmenes de Docker

Persisten datos más allá del ciclo del contenedor.

Tipos: volúmenes con nombre gestionados por Docker, bind mounts al sistema de archivos del host y tmpfs en memoria.

Comandos de volúmenes

Crear: docker volume create mi_volumen

Listar: docker volume ls

Inspeccionar: docker volume inspect mi_volumen

Eliminar: docker volume rm mi_volumen

Limpiar no usados: docker volume prune

Uso

Con nombre: docker run -v mi_volumen:/data ubuntu

Bind mount: docker run -v ruta_host:ruta_contenedor ubuntu

Solo lectura: docker run -v ruta_host:ruta_contenedor:ro ubuntu

tmpfs: docker run --tmpfs /tmp ubuntu

Redes de Docker

Tipos: bridge por defecto, host usa la red del host, none sin red y overlay para múltiples hosts en Swarm.

Comandos de red

Listar: docker network ls

Crear: docker network create mi_red o docker network create --driver bridge mi_bridge

Inspeccionar: docker network inspect mi_red

Conectar contenedor: docker network connect mi_red mi_contenedor

Desconectar: docker network disconnect mi_red mi_contenedor

Eliminar: docker network rm mi_red

Ejemplo

docker network create --driver bridge red_app

docker run -d --name db --network red_app -e POSTGRES_PASSWORD=clave postgres:13

docker run -d --name web --network red_app -p 8080:80 mi_web_app

Docker Compose

Orquesta aplicaciones multicontenedor con un archivo YAML declarativo. Instalación en Linux con binario de GitHub o via pip, y verificación con docker-compose --version. Comandos frecuentes: docker-compose up para iniciar, -d para modo desacoplado, docker-compose down para detener y limpiar, build para construir, logs para ver registros, exec para entrar en un servicio, ps para listar y restart para reiniciar. También puedes escalar servicios con docker-compose up -d --scale web=3.

Registro de Docker

Docker Hub

Iniciar sesión: docker login

Etiquetar: docker tag miapp:latest usuario/miapp:latest

Subir: docker push usuario/miapp:latest

Descargar: docker pull usuario/miapp:latest

Registro privado

Levantar local: docker run -d -p 5000:5000 --name registry registry:2

Etiquetar local: docker tag miapp:latest localhost:5000/miapp:latest

Push y pull: docker push localhost:5000/miapp:latest y docker pull localhost:5000/miapp:latest

Autenticación

docker login mi-registro.com o pasar credenciales con password-stdin

Mejores prácticas

Usa imágenes base oficiales y minimalistas como alpine. Minimiza capas uniendo comandos RUN y limpia cachés apt. Incluye .dockerignore para excluir node_modules, archivos de logs y repositorios. Evita ejecutar como root creando un usuario no privilegiado. Aprovecha compilaciones multi etapa para reducir el tamaño final.

Seguridad

Escanea imágenes con docker scan. Mantén imágenes actualizadas con docker pull. No incluyas secretos en Dockerfile ni en imágenes, emplea variables de entorno seguras, secretos de Swarm o gestores externos. Usa imágenes base reducidas para disminuir superficie de ataque.

Rendimiento

Optimiza la caché copiando primero archivos de dependencias y luego el código. Elimina archivos innecesarios tras la instalación de paquetes. Revisa el tamaño de imágenes con docker images --format table y reduce donde sea posible.

Resolución de problemas

Si un contenedor no inicia, revisa docker logs id_contenedor y docker inspect id_contenedor. Si un puerto está en uso, identifica el proceso y mapea otro puerto con -p 8081:80. Permiso denegado en Linux se corrige agregando tu usuario al grupo docker y reiniciando la sesión. Si falta espacio, limpia con docker container prune, docker image prune, docker volume prune o docker system prune -a.

Diagnóstico

Información del sistema con docker system info y uso de disco con docker system df. Depura contenedores con docker exec -it, logs -f y docker stats. Para redes, lista e inspecciona con docker network ls y docker network inspect bridge.

Temas avanzados

Docker Swarm

Inicializa con docker swarm init, une nodos con docker swarm join, despliega con docker stack deploy -c archivo.yml pila, lista servicios con docker service ls y escala con docker service scale servicio=5.

Healthchecks

Define HEALTHCHECK con intervalos, tiempos de espera y un comando que verifique la salud de la app, por ejemplo curl -f a una ruta de salud.

Build multi plataforma

Con buildx crea un builder y compila para linux amd64 y arm64 con docker buildx build --platform linux/amd64,linux/arm64 -t miapp:latest --push .

Secretos en Swarm

Crea un secreto con echo secreto | docker secret create nombre - y asócialo con docker service create --secret nombre imagen.

Límites de recursos

Con docker run usa -m 512m y --cpus=1.5. En compose define límites dentro de deploy resources limits.

BuildKit

Habilita características avanzadas como caché de compilación por directorios y montajes temporales para acelerar builds y reducir capas.

Comandos útiles de limpieza y monitoreo

Eliminar contenedores detenidos con docker container prune, imágenes sin usar con docker image prune -a, volúmenes con docker volume prune, redes con docker network prune y todo con docker system prune -a --volumes. Monitorear con docker system info, docker system df, docker stats, docker top servicio y docker events.

Backup y restore

Exporta contenedores con docker export contenedor > backup.tar e impórtalos con docker import backup.tar miapp:backup. Guarda imágenes con docker save miapp:latest > miapp.tar y cárgalas con docker load < miapp.tar.

Q2BSTUDIO y Docker para tu negocio

En Q2BSTUDIO integramos Docker en flujos DevOps modernos para acelerar entregas, mejorar la fiabilidad y optimizar costes. Diseñamos aplicaciones a medida y software a medida listos para contenedores, llevamos tus despliegues a nubes líderes y reforzamos la seguridad desde la base de las imágenes hasta la operación. Descubre cómo nuestros servicios cloud AWS y Azure impulsan la portabilidad, escalabilidad y automatización de tus plataformas, y cómo combinamos contenedores con pipelines CI CD y observabilidad.

Si buscas construir o modernizar soluciones nativas en la nube, nuestros equipos de arquitectura y desarrollo crean microservicios orquestados y entornos de pruebas aislados, alineando tus objetivos de negocio con la eficiencia del runtime de contenedores. También te acompañamos a diseñar y contenedorizAR tus aplicaciones a medida para acelerar la entrega continua.

Palabras clave y capacidades

Aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi, automatización y orquestación con contenedores, infraestructura como código, CI CD, seguridad de la cadena de suministro de software y observabilidad integral.

Consejo final

Empieza por contenerizar un servicio simple, practica con volúmenes y redes, orquesta con Compose, y luego avanza a build multi etapa, seguridad y despliegues en la nube. Con práctica y buenas prácticas, Docker se convierte en un pilar para la agilidad y la confiabilidad de tus plataformas.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat