Docker:可以从生成的镜像中恢复在单个 RUN 命令中创建和删除的 secret 吗?

标签 docker docker-build

我想在 docker 构建过程中使用一些 key 。所以我想到将这些键作为构建参数注入(inject)到构建过程中。这应该是安全的。 official documentation states :

Also, these values don’t persist in the intermediate or final images like ENV values do.

这是 Dockerfile 的示例:

FROM ubuntu:latest
ARG key
...
RUN echo $key > /tmp/key && doSomethingWithKey && rm /tmp/key
...

如您所见,有一次我需要将此 key 粘贴到文件中。为了确保该 key 不会被“烘焙”到最终图像中,我立即删除了该 key 。

这是构建命令:

$ docker build --build-arg key="secret" .

现在我的问题是:这安全吗还是 key 会“存储”在最终图像中?

最佳答案

key 不会存储在文件系统中,但会存储在层元数据中,您可以通过镜像上的docker历史记录看到该元数据。因此我建议不要这样做。

我最常在从私有(private)存储库中 checkout 代码时看到此请求,其中在构建中使用了对该存储库的登录。如果是这种情况,您应该在构建命令之前 checkout 代码,然后从 Dockerfile 中复制 checkout 的代码。

关于Docker:可以从生成的镜像中恢复在单个 RUN 命令中创建和删除的 secret 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44270241/

相关文章:

docker - 为什么 docker-compose 会抛出错误?

linux - 如何在 docker logs 命令中使用 --since 选项

docker - 我们可以使用.tar或zip归档文件构建docker镜像吗

python - Docker 构建似乎看不到 requirements.txt,即使它在同一目录中

maven - 如何获取使用fabric8 maven插件构建的Docker图像详细信息?

bash - 为什么 bash 脚本的工作取决于终端窗口的大小?

amazon-web-services - 使用 Visual Studio 2017 运行 Docker 容器时如何管理 AWS 凭证

Docker:有什么方法可以列出正在运行的 docker 容器中打开的套接字?

docker - AWS Codeartifact 和 docker 构建缓存

docker - 在构建过程中将文件从容器复制到主机