【问题标题】:docker - how to hide build argumentsdocker - 如何隐藏构建参数
【发布时间】:2021-09-01 21:58:33
【问题描述】:

我最近开始在我的专业项目中广泛使用 docker。我仍在处理许多细节。

到目前为止,当尝试从 gitlab 或 github 上的存储库获取软件包时,我已经采取了获取令牌的路线,将令牌放入某个环境变量中,然后通过 @987654323 将其传递给 docker build @ 参数,然后到 git clone 命令。

但是,当我开始将图像推送到 dockerhub 时,我有点震惊地发现在“图像层详细信息”部分中,它还显示了传递给 @ 的环境变量的 987654325@,也就是我的安全令牌的内容。现在,这不是那么成问题,因为我可以在每次推送时撤销它们并创建新的,但这似乎很麻烦。

有没有一种好方法可以将安全令牌传递给docker build,这样它们就不会公开出现在任何地方?

【问题讨论】:

  • 您在寻找Docker Build secrets吗?
  • 你可以克隆主机上的存储库(甚至可以检查那里的 Dockerfile),而不是在 Dockerfile 中运行git clone 吗?这样可以避免这个问题,它还可以让你构建一个非默认分支,甚至是你还没有签入的代码。

标签: docker environment-variables access-token


【解决方案1】:

首先我想提一下COPYing 秘密(如果是文件)或使用ARG(使用docker build --arg)将始终可见(通过检查层或使用docker history <image-id> 检查图像所以这些选项是不可能的

Docker 现在支持BuildKit,它使您能够在构建期间挂载机密。 一种方法是在 Dockerfile 中添加以下语句:

RUN --mount=type=secret,id=mysecret <some_command> 

在构建使用期间:

export MYSECRET=bigsecret
DOCKER_BUILDKIT=1 docker build --secret id=mysecret,env=MYSECRET -t myimage:latest .

默认情况下,秘密应在/run/secrets/&lt;secret_name&gt; 上提供,但您也可以自己指定目的地(查看链接)。

【讨论】:

    猜你喜欢
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2017-02-18
    • 1970-01-01
    • 2010-10-06
    • 2013-03-30
    • 1970-01-01
    相关资源
    最近更新 更多