docker - 如何隐藏构建参数
docker - how to hide build arguments
我最近开始在我的专业项目中广泛使用 docker。我仍在掌握许多细节。
到目前为止,当我尝试从 gitlab 或 github 上的存储库获取软件包时,我采用了获取令牌、将令牌放入某个环境变量并将其传递给 docker build
通过 --build-arg
参数,然后到 git clone
命令。
然而,当我开始将图像推送到 dockerhub 时,我有点震惊地发现在“图像层详细信息”部分中,它还显示了 value[=传递给docker build
的环境变量的25=],也就是我的安全令牌的内容。现在,这不是那么有问题,因为我可以在每次推送时撤销它们并创建新的,但这看起来很麻烦。
有没有一种好方法可以将安全令牌传递给 docker build
,这样它们就不会公开出现在任何地方?
首先我想提一下 COPY
ing 秘密(如果它是一个文件)或使用 ARG
(使用 docker build --arg
)将始终可见(通过检查层或使用 docker history <image-id>
检查图像,因此这些选项是不可能的
Docker 现在支持 BuildKit,这使您可以在构建期间装载机密。
一种方法是在 Docker 文件中添加以下语句:
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/<secret_name>
可用,但您也可以自己指定目的地(检查 link)。
我最近开始在我的专业项目中广泛使用 docker。我仍在掌握许多细节。
到目前为止,当我尝试从 gitlab 或 github 上的存储库获取软件包时,我采用了获取令牌、将令牌放入某个环境变量并将其传递给 docker build
通过 --build-arg
参数,然后到 git clone
命令。
然而,当我开始将图像推送到 dockerhub 时,我有点震惊地发现在“图像层详细信息”部分中,它还显示了 value[=传递给docker build
的环境变量的25=],也就是我的安全令牌的内容。现在,这不是那么有问题,因为我可以在每次推送时撤销它们并创建新的,但这看起来很麻烦。
有没有一种好方法可以将安全令牌传递给 docker build
,这样它们就不会公开出现在任何地方?
首先我想提一下 COPY
ing 秘密(如果它是一个文件)或使用 ARG
(使用 docker build --arg
)将始终可见(通过检查层或使用 docker history <image-id>
检查图像,因此这些选项是不可能的
Docker 现在支持 BuildKit,这使您可以在构建期间装载机密。 一种方法是在 Docker 文件中添加以下语句:
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/<secret_name>
可用,但您也可以自己指定目的地(检查 link)。