POR defecto cuando corres
docker run -it [myimage]
O
docker attach [mycontainer]
te conectas a la terminal como usuario root, pero me gustaría conectarme como un usuario diferente. es posible?
docker
containers
root
Andy59469
fuente
fuente
docker run --user user_name
su user_name
Respuestas:
Para
docker run
:Simplemente agregue la opción
--user <user>
para cambiar a otro usuario cuando inicie el contenedor de la ventana acoplable.Para
docker attach
odocker exec
:Dado que el comando se usa para adjuntar / ejecutar en el proceso existente, usa al usuario actual allí directamente.
Si realmente desea adjuntar al usuario que desea tener, entonces
run --user <user>
o menciónelo en suDockerfile
usoUSER
fuente
Puede ejecutar un shell en un contenedor docker en ejecución utilizando un comando como:
docker exec -it --user root <container id> /bin/bash
fuente
--user
La opción se puede omitir cuando los comandos deben ejecutarse como root, supongo.USER
instrucción, consulte docs.docker.com/engine/reference/builder/#userPuede especificar
USER
en el Dockerfile. Todas las acciones posteriores se realizarán utilizando esa cuenta. Puede especificarUSER
una línea antes deCMD
oENTRYPOINT
si solo desea usar ese usuario al iniciar un contenedor (y no al crear la imagen). Cuando inicie un contenedor desde la imagen resultante, lo adjuntará como el usuario especificado.fuente
La única forma en que puedo hacer que funcione es mediante:
Así que tengo que especificar la variable de entorno $ USER y señalar el archivo / etc / passwd. De esta manera, puedo compilar en la carpeta / siem y conservar la propiedad de los archivos que no están como root.
fuente
Mi solución:
Esto permite al usuario ejecutar comandos arbitrarios utilizando las herramientas proporcionadas por
my-docker-image
. Observe cómo el directorio de trabajo actual del usuario está montado en volumen/cmd
dentro del contenedor.Estoy usando este flujo de trabajo para permitir que mi equipo de desarrollo realice una compilación cruzada de código C / C ++ para el objetivo arm64, cuyo bsp mantengo (
my-docker-image
contiene el compilador cruzado, sysroot, make, cmake, etc.). Con esto, un usuario puede simplemente hacer algo como:¿Dónde
cross_compile.sh
está el script que se muestra arriba? Laaddgroup/useradd
maquinaria permite al usuario la propiedad de cualquier archivo / directorio creado por la compilación.Si bien esto funciona para nosotros. Parece una especie de hacky. Estoy abierto a implementaciones alternativas ...
fuente
Ejecute el comando como usuario de www-data:
docker exec -t --user www-data container bash -c "ls -la"
fuente
Para
docker-compose
. En eldocker-compose.yml
:En
.env
:fuente
Como respuesta actualizada de 2020. --user, la opción -u es Nombre de usuario o UID (formato: <nombre | uid> [: <grupo | gid>]).
Entonces, me funciona así,
Referencia: https://docs.docker.com/engine/reference/commandline/exec/
fuente
Esto resolvió mi caso de uso que es: "Compile el material del paquete web en el contenedor nodejs en Windows que ejecute Docker Desktop con WSL2 y tenga los activos construidos bajo su usuario actualmente conectado".
Basado en la respuesta de eigenfield . ¡Gracias!
Además, este material me ayudó a comprender lo que está pasando.
fuente