De forma predeterminada, los contenedores de Docker se ejecutan como usuarios raíz. Ahora, si está ejecutando aplicaciones dentro de Docker Containers, tiene acceso a todos los privilegios de root. Esto representa una gran amenaza para la seguridad cuando implementa aplicaciones a gran escala dentro de Docker Containers. Porque si de alguna manera su aplicación es pirateada por usuarios externos, otras aplicaciones que se ejecutan dentro de los Contenedores también serían un gran riesgo. Además, si su contenedor Docker es parte de una red, toda la red corre el riesgo de ser pirateada. Para evitar esto, debe asegurarse de ejecutar Docker Containers como usuarios no root.
En este artículo, analizaremos dos formas diferentes mediante las cuales puede crear y agregar usuarios no root dentro de Docker Containers.
Método 1: Especificar en Dockerfile
Puede agregar usuarios usando la opción -u junto con useradd . A continuación, puede utilizar la instrucción USER para cambiar de usuario. Considere el Dockerfile a continuación.
FROM ubuntu RUN useradd -u 1234 my-user USER my-user
El Dockerfile anterior extrae la imagen base de Ubuntu y crea un usuario con ID 1234 y el nombre my-user. Luego cambia al nuevo usuario usando la instrucción USER.
Ahora, para construir la imagen, use el comando Docker Build.
sudo docker build -t nonroot-demo .
Use el comando Docker Run para ejecutar el contenedor.
sudo docker run -it nonroot-demo bash
Puede ver que el usuario se ha cambiado al usuario no root que creamos en el Dockerfile .
Método 2: agregando un usuario al grupo de Docker
Para crear un grupo Docker, puede usar el siguiente comando.
sudo groupadd docker
Si ya existe un grupo docker, obtendrá el siguiente resultado:
Ahora, para crear un usuario no root y agregarlo al grupo docker, puede usar el siguiente comando.
sudo useradd -G docker <user-name>
Después de eso, puede asignar una contraseña al usuario usando el siguiente comando.
sudo passwd user
Para cambiar el grupo principal de un usuario, use este comando.
sudo usermod -aG docker <non-root user>
Reinicie el servicio Docker.