docker run --user和--group-add参数之间的区别

luk*_*a5z 21 docker

docker run参数之间有什么区别:

   -u, --user=""
      Sets the username or UID used and optionally the groupname or GID for the specified command.

   The followings examples are all valid:
      --user [user | user:group | uid | uid:gid | user:gid | uid:group ]

   Without this argument the command will be run as root in the container.
Run Code Online (Sandbox Code Playgroud)

   --group-add=[]
      Add additional groups to run as
Run Code Online (Sandbox Code Playgroud)

Yuv*_*uva 26

docker run --user=demo_user <image_name> <command>使用给定命令以demo_user运行容器 在此输入图像描述

docker run --user=demo_user:group1 <image_name> <command>使用给定命令运行容器作为demo_user,其主要组设置为group1 在此输入图像描述

docker run --user=demo_user:group1 --group-add group2 <image_name> <command>使用给定命令运行具有demo_user的容器,其主要组设置为group1,group2设置为用户的辅助组 在此输入图像描述

注意:用于这些选项的用户和组必须已在我们创建容器的图像中创建.如果--group-add没有指定选项,--user并且图像没有声明任何用户(用户应该已经创建但未通过创建映像的Dockerfile中的USER指令声明),则root对容器中的用户进行组修改.

如果--group-add没有指定选项,--user并且图像确实已经声明了用户(通过Dockerfile中的USER指令从中创建了图像),则对容器中声明的用户进行组修改.

  • 下载图像而不是格式化文本. (2认同)
  • @BPS-有资格吗?我很感谢OP花时间提供信息... (2认同)

Ale*_*TRE 8

创建Docker镜像时,还可以在其中创建用户和组.这些选项允许您作为特定用户(-u)和其他组(--group-add)进行连接.

换句话说,当您在Docker容器中执行进程时,您将以提供的用户及其组(在系统中定义)的方式执行此操作.--group-add对于进程的生命周期,您可以通过使用标志告诉系统当前用户具有添加组.

查看以下文档:https://docs.docker.com/engine/reference/run/#/additional-groups

$ docker run --rm --group-add audio --group-add nogroup --group-add 777 busybox id
uid=0(root) gid=0(root) groups=10(wheel),29(audio),99(nogroup),777
Run Code Online (Sandbox Code Playgroud)