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

时间:2016-12-12 11:55:37

标签: 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.

   --group-add=[]
      Add additional groups to run as

2 个答案:

答案 0 :(得分:23)

docker run --user=demo_user <image_name> <command>使用给定命令运行容器 demo_user enter image description here

docker run --user=demo_user:group1 <image_name> <command>使用给定命令运行容器 demo_user ,其主要组设置为 group1 enter image description here

docker run --user=demo_user:group1 --group-add group2 <image_name> <command>使用给定命令运行容器 demo_user ,其主要组设为 group1 group2 为辅助组用户 enter image description here

注意:用于这些选项的用户和组必须已在我们创建容器的图像中创建。 如果在没有--group-add的情况下单独指定--user选项并且图像没有声明任何用户(用户应该已经创建但未通过Dockerfile中的USER指令声明,从中创建了图像),则组修改发生到容器中的root用户。

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

答案 1 :(得分:7)

创建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