Estoy trabajando en Docker y antes de ejecutar cualquier comando en Docker CLI, necesito cambiar a root usado usando el comando

sudo su - root

¿Alguien puede decirme por qué debemos cambiar al usuario root para realizar cualquier operación en Docker Engine?

-1
Harry S 16 abr. 2020 a las 08:21

2 respuestas

La mejor respuesta

No necesita cambiar a root para los comandos docker cli y es común agregar su usuario al grupo docker

sudo groupadd docker
sudo usermod -aG docker $USER

Ver: https: / /docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user

La razón por la que Docker se ejecuta como root:

El demonio Docker se une a un socket Unix en lugar de a un puerto TCP. Por defecto, el socket Unix es propiedad del usuario root y otros usuarios solo pueden acceder a él usando sudo. El demonio Docker siempre se ejecuta como usuario root.

2
invad0r 16 abr. 2020 a las 05:54

Con los comandos docker, puede obtener acceso trivial a nivel de raíz a cualquier parte del sistema de archivos del host. El ejemplo más básico es

docker run --rm -v /:/host busybox cat /host/etc/shadow

Que le proporcionará un archivo de contraseñas cifradas que puede descifrar sin conexión cuando lo desee; pero si realmente quisiera tomar el control de la máquina, simplemente escribiría mi propia línea en /host/etc/passwd y /host/etc/shadow creando un usuario uid-0 alternativo sin contraseña e iría a la ciudad.

Docker realmente no tiene forma de limitar qué comandos docker puede ejecutar o qué archivos o volúmenes puede montar. Entonces, si puede ejecutar cualquier comando docker, tiene acceso root sin restricciones al host. Ponerlo detrás de sudo es apropiado.

El otro corolario importante de esto es que usar la opción dockerd -H para hacer que el socket Docker sea accesible a la red es pedirle a su sistema que se enrute de forma remota. Google "Docker cryptojacking" para obtener más detalles y ejemplos destacados de la vida real.

0
David Maze 16 abr. 2020 a las 11:33