USER

USER <user>[:<group>]

USER <UID>[:<GID>]

当运行一个镜像时,USER指令可以用来设置一个用户名(UID)和可选的用户组(或GID)。任何跟随在该指令之后的RUN,CMDENTRYPOINT指令都会按照设置的用户用户组权限运行。

NOTE:

当为用户指定一个组时,用户将只有指定组的成员关系。已经配置的任何其他组成员关系都将被忽略。

WARNING:

当用户没有一个主组时,那么镜像(或者下一条指令)将通过root组身份运行。

windows上,如果不存在一个内建的账户,那么必须先创建一个用户。这可以通过作为Dockerfile的一部分被调用的net user命令来完成。

FROM microsoft/windowsservercore
# Create Windows user in the container
RUN net user /add patrick
# Set it for subsequent commands
USER patrick

demo:

FROM centos:7
RUN useradd -u 9000 Yang; groupadd -g 9100 ChangZhou #创建用户和用户组,否则系统中不存在该信息
USER 9000:9100
RUN mkdir /tmp/my_dir && cd /tmp/my_dir/ && touch file
CMD ["/bin/echo", "process finished"]

检查文件信息:

[Yang@b21fa1fb48f9 tmp]$ ll
total 8
-rwx------ 1 root root       836 Nov 13 01:55 ks-script-DrRL8A
drwxr-xr-x 2 Yang ChangZhou 4096 Mar  7 03:45 my_dir
-rw------- 1 root root         0 Nov 13 01:53 yum.log
[Yang@b21fa1fb48f9 tmp]$

上面的结果显示,目录根据我们设置的用户名组名被创建了。在Dockerfile中引用用户用户组时,记得得在基础镜像的系统中先创建该用户用户组

Last updated