En las páginas de documentación de Docker, todos los comandos de ejemplo se muestran sin este sudo
, como este:
docker ps
En Ubuntu, se llama al binario docker.io
. Tampoco funciona sin sudo:
sudo docker.io ps
¿Cómo puedo configurar Docker para que no necesite prefijar cada comando Docker con sudo?
apt-cache policy docker-engine
(la url apta debe ser de dockerproject.org)Respuestas:
Buenas noticias: el nuevo docker (versión 19.03 (actualmente experimental)) podrá ejecutarse sin root negando los problemas que pueden ocurrir al usar un usuario root. No más juegos con permisos elevados, root y cualquier cosa que pueda abrir su máquina cuando no lo desee.
Video sobre esto del [DockerCon 2019] Hardening Docker daemon con modo Rootless
A partir de Docker 19.3 esto es obsoleto (y más peligroso de lo necesario):
El manual del acoplador tiene esto que decir al respecto:
Importante leer: pasos posteriores a la instalación para Linux (también se vincula a los detalles de Docker Daemon Attack Surface ).
Agregue el grupo acoplable si aún no existe:
Agregue el usuario conectado "$ USER" al grupo acoplable. Cambie el nombre de usuario para que coincida con su usuario preferido si no desea utilizar su usuario actual:
Realice una
newgrp docker
o cierre sesión / inicie sesión para activar los cambios en los grupos.Puedes usar
para verificar si puedes ejecutar docker sin sudo.
fuente
newgrp docker
no funcionó para mí, tuve que cerrar sesión.docker login
, puede encontrar que la.docker
carpeta creada en su carpeta de inicio perteneceroot
. por lo tanto usted se encontraría con esta advertencia cuando se ejecuta comandos ventana acoplable:WARNING: Error loading config file:/home/myuser/.docker/config.json - stat /home/myuser/.docker/config.json: permission denied
. Hice de mi usuario.docker
carpeta accesible sin sudo así:sudo chgrp -hR docker ~/.docker && sudo chown -R myuser ~/.docker
. Sinchgrp
embargo, no pareció ayudar, por lo que probablemente solo debería recomendar el paso Chown.Para ejecutar el comando Docker sin
sudo
, debe agregar su usuario (que tiene privilegios de root) al grupo Docker. Para esta ejecución, siga el comando:Ahora, haga que el usuario cierre sesión y luego vuelva a iniciar sesión. Esta solución se explica bien aquí con el proceso de instalación adecuado.
fuente
El mecanismo por el cual agregar un usuario al grupo
docker
otorga permiso para ejecutar docker es obtener acceso al socket de docker en/var/run/docker.sock
. Si el sistema de archivos que contiene/var/run
se ha montado con ACL habilitadas, esto también se puede lograr a través de ACL.Solo incluyo esto para completar.
En general, recomiendo evitar las ACL siempre que haya disponible una buena alternativa basada en grupos: es mejor si los privilegios de un sistema pueden entenderse mirando solo las membresías de grupo. Tener que escanear el sistema de archivos en busca de entradas de ACL para comprender los privilegios del sistema es una carga adicional para las auditorías de seguridad.
Advertencia 1 : Esto tiene la misma
root
equivalencia que agregarusername
aldocker
grupo. Todavía puede iniciar un contenedor de manera que tengaroot
acceso al sistema de archivos del host.Advertencia 2 : las ACL son significativamente más difíciles para las auditorías de seguridad que la seguridad basada en grupos. Probablemente evite las ACL si es posible cuando pueda usar grupos, al menos en entornos relevantes para la auditoría.
fuente