首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么docker要以root用户身份构建拷贝入口点脚本?

为什么docker要以root用户身份构建拷贝入口点脚本?
EN

Stack Overflow用户
提问于 2020-07-08 20:26:58
回答 1查看 82关注 0票数 0

当我在切换用户后将entrypoint.sh复制到主目录时,为什么docker build仍然将其分配给root用户:

代码语言:javascript
运行
复制
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用户身份)构建此文件,则输出为:

代码语言:javascript
运行
复制
$ 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.shroot所有(而不是我期望的归hakond所有)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-08 22:35:48

在ADD或COPY命令中使用可选标志--chown=:。

chown docker

As copy命令默认使用root用户。

代码语言:javascript
运行
复制
COPY --chown=$user entrypoint.sh $home

输出应为

代码语言:javascript
运行
复制
Step 13/14 : RUN ls -l entrypoint.sh
 ---> Running in 231123a8899b
-rwxrwxr-x 1 hakond hakond 0 Jul  8 14:28 entrypoint.sh
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62794804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档