在构建Docker映像时,我如何COPY一个文件到映像中,以便结果文件由根用户以外的用户拥有?
COPY
对于v17.09.0-ce及更新版本
在ADD或COPY命令中使用可选标志--chown=<user>:<group>。
ADD
--chown=<user>:<group>
例如
COPY --chown=<user>:<group> <hostPath> <containerPath>
——chown标志的文档现在在主Dockerfile参考页面上存在。
文档版本34263已被合并,并在release v17.09.0-ce。
对于v17.09.0-ce之前的版本
除了root用户,Docker不支持COPY。你需要chown / chmod文件后 COPY命令。
chown
chmod
示例Dockerfile:
from centos:6 RUN groupadd -r myuser && adduser -r -g myuser myuser USER myuser #Install code, configure application, etc... USER root COPY run-my-app.sh /usr/local/bin/run-my-app.sh RUN chown myuser:myuser /usr/local/bin/run-my-app.sh && \ chmod 744 /usr/local/bin/run-my-app.sh USER myuser ENTRYPOINT ["/usr/local/bin/run-my-app.sh"]
在v17.09.0-ce之前,COPY命令的Dockerfile引用说:
所有新创建的文件和目录的UID和GID都是0。
< >强历史 此功能已通过多个GitHub问题跟踪:6119, 9943, 13600, 27303, 28499, 发行30110.
发行34263是实现可选标志功能的问题,而发行467更新了文档。