POR defecto cuando se ejecuta

docker run -it [myimage]

O

docker attach [mycontainer]

se conecta a la terminal como usuario root, pero me gustaría conectarse como un usuario diferente. Es esto posible?

Sí. docker run --user user_name
y para adjuntar ?
No existe esa opción para adjuntar. Usted tendrá que iniciar la sesión como root y luego su user_name

OriginalEl autor Andy59469 | 2016-03-01

6 Comentarios

  1. 35

    Para docker run:

    Simplemente agregar la opción --user <user> para cambiar a otro usuario al iniciar la ventana acoplable contenedor.

    docker run -it --user nobody busybox
    

    Para docker attach o docker exec:

    Debido a que el comando se utiliza para conectar/ejecutar en el proceso existente, por lo que utiliza el usuario actual no directamente.

    docker run -it busybox  # CTRL-P/Q to quit
    docker attach <container id>  # then you have root user
    /# id
    uid=0(root) gid=0(root) groups=10(wheel)
    
    docker run -it --user nobody busybox # CTRL-P/Q to quit
    docker attach <container id>  
    /$ id
    uid=99(nobody) gid=99(nogroup)
    

    Si usted realmente desea asociar al usuario que desea tener, a continuación,

    1. iniciar con el usuario run --user <user> o mencionarlo en su Dockerfile utilizando USER
    2. cambiar el usuario con `su

    OriginalEl autor Larry Cai

  2. 23

    Puede ejecutar una shell en una ventana acoplable contenedor, usando un comando como:

    docker exec -it --user root <container id> /bin/bash

    root es el valor predeterminado de usuario. --user opción puede ser omitido cuando los comandos se ejecutan como root, supongo.

    OriginalEl autor Jason

  3. 5

    Puede especificar USER en el Dockerfile. Todas las acciones posteriores se realizará con que cuenta. Puede especificar USER una línea antes de la CMD o ENTRYPOINT si sólo desea utilizar ese usuario a la hora de lanzar un contenedor (y no cuando la construcción de la imagen). Cuando se inicia un contenedor de la imagen resultante, va a adjuntar como el usuario especificado.

    También nunca se olvide de establecer el HOGAR

    OriginalEl autor kliew

  4. 1

    La única manera en que soy capaz de hacer que funcione es:


    docker run -it -e USER=$USER -v /etc/passwd:/etc/passwd -v `pwd`:/siem mono bash
    su - magnus

    Así que tengo tanto que especifique $variable de entorno de USUARIO, así como un punto en el archivo /etc/passwd. De esta manera, puedo compilar en /siem carpeta y conservar la propiedad de los archivos no como root.

    OriginalEl autor typelogic

  5. 1

    Mi solución:

    #!/bin/bash
    user_cmds="[email protected]"
    
    GID=$(id -g $USER)
    UID=$(id -u $USER)
    RUN_SCRIPT=$(mktemp -p $(pwd))
    (
    cat << EOF
    addgroup --gid $GID $USER
    useradd --no-create-home --home /cmd --gid $GID --uid $UID  $USER
    cd /cmd
    runuser -l $USER -c "${user_cmds}"
    EOF
    ) > $RUN_SCRIPT
    
    trap "rm -rf $RUN_SCRIPT" EXIT
    
    docker run -v $(pwd):/cmd --rm my-docker-image "bash /cmd/$(basename ${RUN_SCRIPT})"
    

    Esto permite al usuario ejecutar comandos arbitrarios mediante las herramientas que proporciona my-docker-image. Nota cómo el usuario del directorio de trabajo actual es el volumen montado
    a /cmd en el interior del contenedor.

    Estoy usando este flujo de trabajo para permitir que mi dev-team para un compilador cruzado de C/C++ de código para el arm64 de destino, cuya bsp mantener (el my-docker-image contiene el compilador cruzado, sysroot, hacer, cmake, etc). Con esto los usuarios pueden simplemente hacer algo como:

    cd /path/to/target_software
    cross_compile.sh "mkdir build; cd build; cmake ../; make"
    

    Donde cross_compile.sh es el script que se muestra arriba. El addgroup/useradd maquinaria permite que el usuario la propiedad de los archivos/directorios creados por el build.

    Aunque esto funciona para nosotros. Parece una especie de chapucero. Estoy abierto a las implementaciones alternativas …

    OriginalEl autor rmccabe3701

  6. 0

    Ejecutar el comando como www-data usuario: docker exec -t --user www-data container bash -c "ls -la"

    OriginalEl autor Vasili Pascal

Dejar respuesta

Please enter your comment!
Please enter your name here