USER
USER <user>[:<group>]
或
USER <UID>[:<GID>]
当运行一个镜像时,USER指令可以用来设置一个用户名(UID)和可选的用户组(或GID)。任何跟随在该指令之后的RUN,CMD和ENTRYPOINT指令都会按照设置的用户和用户组权限运行。
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
Was this helpful?