Tecnología · GUÍA PRÁCTICA
¿Permiso denegado en el socket de Docker? Demuestra cliente, socket y daemon
No normalices chmod 666 o 777 en docker.sock. Conserva identidad, contexto de Docker y socket exacto; separa daemon rootful, rootless y socket montado, y autoriza solo al sujeto necesario.

Un permiso denegado en un socket Unix de Docker significa que el proceso cliente no cruzó ese límite de pathname. No demuestra que el daemon esté parado ni que el endpoint sea /var/run/docker.sock.
Conserva identidad, context, DOCKER_HOST y metadatos del socket. Clasifica daemon rootful del host, daemon rootless del usuario o socket montado en otro contenedor antes de cambiar acceso.
Conserva identidad del cliente y endpoint
Registra error, comando, UID y grupos efectivos. Guarda docker context show, DOCKER_HOST y endpoint resuelto antes de sudo o cambios de grupo.
Inspecciona propietario, grupo, modo y directorios padre del pathname exacto con nombres y números. Un path ausente es otra rama.
Clasifica rootful, rootless y socket montado
Un daemon Linux rootful puede abrir el socket de root al grupo docker. Trata ese grupo como administración privilegiada, no comodidad ordinaria.
En rootless confirma socket y context del usuario. En CI o contenedor de aplicación identifica el socket host montado y separa namespaces.
Demuestra credenciales y GID numérico
Compara el GID numérico del socket con los grupos del proceso que ejecuta Docker. Editar /etc/group no reescribe credenciales de shell, IDE, agent o daemon existentes.
En un montaje, el nombre docker en ambos lados puede tener números distintos. Mapea el GID en el límite del llamador en vez de cambiar el dueño del socket host.
Elige el límite mínimo de autorización
Si se aprueba el grupo rootful, añade solo la identidad necesaria y renueva su sesión. Si el acceso equivalente a root es demasiado amplio, evalúa rootless o un entorno aislado.
No uses chmod 666/777 como reparación duradera. World-write abre una API potente a procesos ajenos y un reinicio puede recrear el socket administrado.
Verifica el daemon esperado sin ocultar el límite
Desde el mismo llamador ejecuta docker context show y docker info o docker version; confirma context, server y opción rootless. El éxito solo con sudo prueba una diferencia de credenciales.
Ejecuta una carga autorizada. Cierra solo cuando el socket no world-write funciona para el sujeto previsto y sigue negando una identidad ajena sin privilegios.
