在Docker中使用构建时参数的安全方法

so-*_*ude 4 docker dockerfile

我有一个构建时参数,我想用它来构建我的Docker文件; 由于该参数本质上是机密的(私人仓库的github密钥),我不希望它最终出现在码头图像中.这个引用来自关于构建时参数的官方docker文档.

警告:建议不要使用构建时变量来传递github密钥,用户凭据等秘密.使用docker history命令可以使映像的任何用户都可以看到构建时变量值.

有人知道推荐的方法是什么?

Von*_*onC 14

使用docker 18.09+,它将是:( docker build --secret id=mysecret,src=/secret/file使用buildkit).

参见本推文中公布的PR 1288.现在由API版本1.39保护.
--secret

例:

printf "hello secret" > ./mysecret.txt

export DOCKER_BUILDKIT=1

docker build --no-cache --progress=plain --secret id=mysecret,src=$(pwd)/mysecret.txt -f - . <<EOF
# syntax = tonistiigi/dockerfile:secrets20180808
FROM busybox
RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret
RUN --mount=type=secret,id=mysecret,dst=/foobar cat /foobar
EOF
Run Code Online (Sandbox Code Playgroud)