如何以非 root 身份进行 Docker COPY?

2024-03-09

在构建 Docker 镜像时,我该如何COPY一个文件到映像中,以便生成的文件归 root 以外的用户所有?


适用于 v17.09.0-ce 及更高版本

使用可选标志--chown=<user>:<group>与任一ADD or COPY命令。

例如

COPY --chown=<user>:<group> <hostPath> <containerPath>

--chown 标志的文档现在已在主网上发布Dockerfile 参考页面 https://docs.docker.com/engine/reference/builder/#copy.

Issue 34263 https://github.com/moby/moby/pull/34263已合并并可用于发布 v17.09.0-ce https://github.com/docker/docker-ce/releases/tag/v17.09.0-ce.


对于 v17.09.0-ce 之前的版本

Docker 不支持COPY作为 root 以外的用户。你需要chown / chmod文件after the COPY命令。

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 之前的版本,Dockerfile 参考COPY命令说:

所有新文件和目录均使用 UID 和 GID 0 创建。


History该功能已通过多个 GitHub 问题进行跟踪:6119 https://github.com/moby/moby/issues/6119, 9943 https://github.com/moby/moby/pull/9934, 13600 https://github.com/moby/moby/pull/13600, 27303 https://github.com/moby/moby/pull/27303, 28499 https://github.com/moby/moby/pull/28499, 问题 30110 https://github.com/moby/moby/issues/30110.

问题 34263 https://github.com/moby/moby/pull/34263是实现可选标志功能的问题,并且第467期 https://github.com/docker/cli/pull/467更新了文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以非 root 身份进行 Docker COPY? 的相关文章

随机推荐

  • 有没有办法不将人们重定向到 Mailchimp 的“谢谢”页面?

    我在 Mailchimp 网站上看到 当用户订阅您的邮件列表时 您可以将用户重定向到自定义感谢页面 但这并不是我想要做的 当用户订阅我的邮件列表时 我想隐藏表单并直接在我的页面上将其替换为感谢信 而不进行任何重定向 有没有办法做到这一点 您
  • Notepad++ 的整洁 CSS

    是否有某种 CSS 整洁可用于 Notepad 我已经尝试了 TEXTFX 中似乎每个菜单项 但似乎没有一个能做到这一点 我习惯使用 PSPAD 只需选择 CSS 并单击 重新格式化为结构化 CSS EDIT在问这个问题很长时间后发现了一个
  • 如何在NextJs中为Material UI的媒体查询实现SSR?

    我无法遵循文档 https material ui com components use media query server side rendering实现 Material UI 的媒体查询 因为它是为普通的 React 应用程序指定
  • 使用 PowerShell 重命名 FTP 上的文件

    有没有办法重命名 FTP 目录中的文件 我正在将实时图像从计算机流式传输到 FTP 但问题是当它将图像上传到 FTP 时 它会立即替换文件 我想先上传临时名称的图像 然后重命名为 live jpg 这就像缓存文件上传一样 while tru
  • ASP.NET MVC 中的 jQuery 与 MicrosoftAjax

    在什么情况下您会在 ASP NET MVC 应用程序中使用 MicrosoftAjax 而不是 jQuery 根据斯科特 凯特在此播客中的说法Scott Cate 的面向对象 AJAX http www hanselminutes com
  • 实现 jquery UI 自动完成以在您键入“@”时显示建议

    我正在使用 jquery UI AutoComplete 来允许用户使用 mentions 来标记朋友 默认情况下 当您将焦点放在文本框上时 就会出现自动完成建议 如何让建议仅在您输入 时出现 这是我到目前为止的代码 var availab
  • 为什么无法访问的代码在 C++ 中不是错误?

    无法访问的代码是 Java 等语言中的编译时错误 但为什么它在 C 和 C 中只是警告呢 考虑以下示例 include
  • 如何在跨平台 xamarin XAML 上从资产目录加载图像?

    这似乎是一件非常容易做的事情 而且理论上它看起来非常简单 创建资产目录 添加图像集并将其命名为 imageName 不带 png 添加图像 done 或者至少这是我到处读到的内容 但我仍然无法让它发挥作用 我的 XAML 看起来像这样
  • Android Gradle:javaMaxHeapSize“4g”是什么?

    在一个安卓项目中 构建 gradle文件 我已经经历过这一行 dexOptions javaMaxHeapSize 4g 我想知道这样做的确切目的java最大堆大小那是什么4g方法 我还能提供哪些其他价值 正如它在上面回答 https st
  • 从 NHibernate 映射生成数据库模式

    是否可以从 Nhibernate 映射 DLL 生成数据库模式 我的要求是MySQL 如果是这样 我该怎么做 有这方面的工具 脚本吗 开源 免费软件工具 此外 我可以使用这些工具将数据集插入 更新到数据库吗 你有没有尝试过使用NHibern
  • 打开导航抽屉时使片段可点击

    我的问题如下 我锁定了导航抽屉菜单setDrawerLockMode DrawerLayout LOCK MODE LOCKED OPEN 在平板电脑的横向模式下 但我需要右侧的片段处于活动状态 这样我就可以在导航始终打开的情况下单击它 但
  • 使用 RSpec,如何在加载时为数据库设定种子?

    我正在使用 rspec 来测试我的 Rails 3 应用程序 我需要在测试开始之前为数据库播种 如何使用以下内容为数据库播种 db seeds rb Admin Member each do role name Role find or c
  • 我可以更改脚本 src 并让 javascript 运行新代码吗?

    我有一个页面 实际上是一个演示文稿 很像幻灯片 这是一个无限循环 它使用 ajax 进行自我更新 以下载自上次以来的新演示内容 现在 当用户决定更改幻灯片中的过渡效果时 以下行将发生更改 然而 即使我用例如替换整个标签 它仍然执行与最初加载
  • GAE 云端点 - Api 在部署后未更新

    我开始在我的 GAE 项目中使用云端点 但遇到了 api 未在服务器上更新的问题 localhost 8888 ah api explorer 就可以了 但当我部署时 没有任何变化 myapp appspot com 8888 ah api
  • Symfony2:递归验证

    我有一个带有一些验证器的实体 不是一种形式 所以我用 validator gt validate entity 但它不会验证我的子对象 实体类还有一些其他实体类和一些验证器 有没有一种 自动 的方式来做到这一点 或者我必须这样做 error
  • 如何使用 eclipse android-junit 启动配置从测试应用程序中排除测试

    我有一个正在测试的应用程序项目和一个测试应用程序项目 在 Android 上 我的测试应用程序包含很多测试 但我想找到一种机制来从测试启动 从 eclipse 启动 中排除测试或测试类 我知道我可以根据注释排除命令行上的测试 或者使用 an
  • Windows Azure 是否有任何可用的方法来抵御拒绝服务攻击?

    我们正在开发一个托管在 Windows Azure 中的 Web 服务 我们预计坏人有时会尝试对其进行 DDOS 我用谷歌搜索并没有找到任何新的和明确的 this one http blogs blackmarble co uk blogs
  • Java中字符串的字符之间添加空格?

    我只想在字符串的每个字符之间添加一个空格 谁能帮我弄清楚如何做到这一点 例如 给定 JAYARAM 我需要 J A Y A R A M 作为结果 除非你想循环遍历字符串并 手动 执行它 否则你可以这样解决它 yourString repla
  • jQuery 圆角滑块

    我想做一个如下图所示的圆形滑块 jQuery 能做到这一点吗 I know how a straight slider works but I would like to make a HTML5 rounded slider Here i
  • 如何以非 root 身份进行 Docker COPY?

    在构建 Docker 镜像时 我该如何COPY一个文件到映像中 以便生成的文件归 root 以外的用户所有 适用于 v17 09 0 ce 及更高版本 使用可选标志 chown