Casos de uso prácticos y ejemplos
Asignar permisos detallados a usuarios no root en Docker puede ser beneficioso en una variedad de escenarios. Aquí hay algunos casos de uso prácticos y ejemplos:
Escenario 1: Ejecutar un servidor web
Supongamos que tienes una aplicación web que se ejecuta en un contenedor Docker y deseas que el usuario no root tenga los permisos necesarios para iniciar y gestionar el proceso del servidor web.
## Dockerfile
FROM ubuntu:22.04
RUN useradd -ms /bin/bash myuser
RUN apt-get update && apt-get install -y nginx
RUN chown -R myuser:myuser /var/www/html
USER myuser
CMD ["nginx", "-g", "daemon off;"]
En este ejemplo, al usuario no root myuser
se le otorga la propiedad del directorio /var/www/html
, que es la ubicación predeterminada para el servidor web Nginx. Esto permite que el usuario no root inicie y gestione el proceso de Nginx dentro del contenedor.
Escenario 2: Acceder a archivos sensibles
Si tu contenedor necesita acceder a archivos o directorios sensibles, puedes otorgar al usuario no root los permisos necesarios para leer o escribir en esas ubicaciones.
## Ejecutar el contenedor con permisos de volumen específicos
docker run -it --user myuser -v /path/to/sensitive/files:/sensitive:rw,uid=1000,gid=1000 ubuntu:22.04 bash
En este ejemplo, al usuario no root con un ID de usuario 1000
y un ID de grupo 1000
se le otorga acceso de lectura y escritura al directorio /path/to/sensitive/files
dentro del contenedor.
Escenario 3: Interactuar con el demonio de Docker
Si tu usuario no root necesita interactuar con el demonio de Docker, puedes agregarlo al grupo "docker" dentro del contenedor.
## Dockerfile
FROM ubuntu:22.04
RUN useradd -ms /bin/bash myuser
RUN usermod -aG docker myuser
USER myuser
Este Dockerfile
crea un usuario no root llamado myuser
y lo agrega al grupo "docker", lo que le permite realizar tareas relacionadas con Docker, como construir y gestionar contenedores.
Escenario 4: Ejecutar comandos con privilegios
En algunos casos, tu usuario no root puede necesitar ejecutar comandos con privilegios que requieran capacidades específicas. Puedes usar la bandera --cap-add
para otorgar las capacidades necesarias al usuario no root.
## Ejecutar el contenedor con una capacidad específica
docker run -it --user myuser --cap-add=SYS_ADMIN ubuntu:22.04 bash
En este ejemplo, al usuario no root se le otorga la capacidad "CAP_SYS_ADMIN", que le permite realizar tareas de administración del sistema que requieren privilegios elevados.
Al entender estos casos de uso prácticos y ejemplos, puedes otorgar de manera efectiva permisos detallados a usuarios no root en Docker, asegurándote de que tengan el acceso necesario para realizar sus tareas mientras se mantiene un entorno seguro y aislado.