Instalar Docker no consiste únicamente en conseguir que funcione. Debes comprender .
docker run hello-world
qué daemon controla la CLI, dónde se ejecutan realmente los containers, qué permisos posee el usuario, qué recursos están disponibles y qué diferencias introduce la plataforma
Docker Engine incluye el daemon, APIs y runtime necesarios para administrar images, containers, networks y volumes. En un servidor Linux normalmente se ejecuta como un servicio del sistema.
Texto
Linux host
→ dockerd
→ containerd
→ containers Linux usando kernel del host
Este modelo ofrece acceso directo al kernel y suele representar mejor un host de producción Linux.
Docker Desktop integra Engine, CLI, Compose, gestión de recursos y otras herramientas. En macOS y Windows necesita una VM Linux para ejecutar containers Linux.
Texto
macOS / Windows
→ Docker Desktop
→ Linux VM
→ Docker Engine
→ Linux containers
La VM cambia varias cosas:
la memoria y CPU están asignadas a una capa intermedia;
bind mounts cruzan la frontera host-VM;
paths y permisos pueden comportarse distinto;
la IP del host y del container no siguen exactamente el mismo modelo que Linux nativo;
el disco de images y volumes vive dentro del entorno administrado por Desktop.
Las instrucciones exactas dependen del sistema operativo y cambian con versiones. La fuente principal debe ser la documentación oficial para tu plataforma.
Antes de instalar, decide:
¿Es un equipo de desarrollo o un servidor?
¿Necesitas Docker Desktop o solo Engine?
¿La organización permite Desktop según su licencia?
¿El host usa amd64 o arm64?
¿Necesitas rootless mode?
¿Cómo se actualizará y respaldará el entorno?
¿Qué usuario administrará el daemon?
En servidores, evita scripts de instalación no auditados y repositorios no oficiales. Una instalación rápida puede configurar versiones o permisos que no entiendes.
docker context lsdocker context show
docker context inspect
Un contexto define a qué endpoint se conecta la CLI y cómo se autentica. Puedes tener un contexto local y otro de producción.
Texto
default → socket local
production → Engine remoto protegido por SSH/TLS
Antes de comandos destructivos, confirma el contexto. docker system prune sobre producción por usar el contexto equivocado no es un error de Docker, sino una falta de control operativo.
En Linux, el daemon suele ejecutarse con privilegios elevados. El socket Unix puede pertenecer a root:docker.
Añadir un usuario al grupo docker elimina la necesidad de sudo, pero le concede una capacidad equivalente a root porque puede pedir al daemon montar el host o crear containers privilegiados.
Bash
sudousermod-aGdocker$USER
Este comando no debe entenderse como “dar permiso limitado para ejecutar containers”. Debe tratarse como acceso administrativo.
Rootless reduce el impacto potencial del daemon y containers, pero tiene diferencias en networking, cgroups, storage y puertos privilegiados. Debe probarse con el workload real.
Los contextos permiten administrar varios Engines sin cambiar manualmente variables y certificados.
Bash
docker context create staging --dockerhost=ssh://deploy@staging.example.com
docker context use staging
dockerps
En este ejemplo, docker ps lista containers del host remoto.
Consecuencia importante: un bind mount como:
Bash
docker run -v$PWD:/app image
se interpreta en el host donde corre el daemon. Con un Engine remoto, $PWD de tu shell no se transfiere automáticamente. El daemon intentará montar ese path remoto.
En Desktop, CPU, memoria y disco pertenecen a la VM o entorno virtualizado. Una aplicación puede fallar por límites de Desktop aunque el equipo físico tenga recursos libres.
Images, layers, build cache y volumes consumen el disco virtual. Liberar espacio en el host no siempre reduce inmediatamente el archivo virtual; usa herramientas soportadas por Desktop.
Docker administra su data root. Allí viven metadata, snapshots, layers, containers y volumes según la configuración.
No debes editar directamente /var/lib/docker ni paths internos de Desktop. Las implementaciones pueden cambiar entre storage drivers o image stores, y Docker Engine 29 introdujo cambios relevantes alrededor del image store de containerd en instalaciones nuevas.
Para inspección usa:
Bash
docker system df-vdocker image lsdocker volume lsdocker info
Depender de la estructura interna del directorio hace frágiles backups y scripts.
En redes empresariales, el daemon puede necesitar proxy para pull y el build puede necesitar otro para descargar dependencias.
Existen tres niveles distintos:
Texto
CLI / usuario
Docker daemon
build y proceso dentro del container
Configurar solo HTTP_PROXY en tu shell puede no resolver un pull del daemon. Agregar una CA al host tampoco garantiza que la base image confíe en ella.
No desactives TLS como solución permanente. Instala la CA en la frontera correcta.