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
?
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作为用户的辅助组
注意:用于这些选项的用户和组必须已经在我们创build容器的图像中创build。 如果单独指定--group-add
选项而没有指定--user
,并且图像没有声明任何用户(用户应该已经创build了,但是没有通过创build镜像的Dockerfile中的USER指令声明),组的修改发生在root
容器中的用户。
如果单独指定--group-add
选项而不指定--user
,并且图像确实有用户声明(通过Dockerfile中的USER指令创build映像),则组中的声明用户将进行组修改。
当您创buildDocker镜像时,您也可以在其中创build用户和组。 这些选项允许您以特定用户( -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