为什么docker以root用户身份构建复制入口点脚本?
切换用户后,当我将为什么docker以root用户身份构建复制入口点脚本?,docker,dockerfile,Docker,Dockerfile,切换用户后,当我将entrypoint.sh复制到主目录时,为什么docker build仍将其分配给root用户: FROM ubuntu:20.04 SHELL ["/bin/bash", "-c"] ARG user=hakond ARG home=/home/$user RUN useradd --create-home -s /bin/bash $user \ && echo $user:ubuntu | chpa
entrypoint.sh
复制到主目录时,为什么docker build
仍将其分配给root
用户:
FROM ubuntu:20.04
SHELL ["/bin/bash", "-c"]
ARG user=hakond
ARG home=/home/$user
RUN useradd --create-home -s /bin/bash $user \
&& echo $user:ubuntu | chpasswd \
&& adduser $user sudo
WORKDIR $home
USER $user
COPY entrypoint.sh $home
RUN ls -l entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]
如果我构建这个(作为用户hakon
),输出是:
$ ls -l entrypoint.sh
-rwxr-xr-x 1 hakon hakon 24 juli 8 14:16 entrypoint.sh
$ echo $USER
hakon
$ docker build -t debug_entrypoint .
[...]
Step 8/10 : COPY entrypoint.sh $home
---> 5f6d16e80d2c
Step 9/10 : RUN ls -l entrypoint.sh
---> Running in ee919e65e860
-rwxr-xr-x 1 root root 24 Jul 8 12:16 entrypoint.sh
[...]
请注意,文件entrypoint.sh
属于root
(而不是像我预期的那样属于hakond
)使用可选标志--chown=:和ADD或COPY命令
作为复制命令,默认情况下使用root
user
COPY --chown=$user entrypoint.sh $home
输出应该是
Step 13/14 : RUN ls -l entrypoint.sh
---> Running in 231123a8899b
-rwxrwxr-x 1 hakond hakond 0 Jul 8 14:28 entrypoint.sh