我想在 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/