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
答案 0 :(得分:23)
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指令从中创建了图像),则会对声明的用户进行组修改容器
答案 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