当前位置: 首页 > 面试题库 >

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

耿锦
2023-03-14
问题内容

我有一个构建时间参数,我想以此构建Docker文件。由于该论点本质上是机密的(私有存储库的github键),所以我不希望它最终出现在docker映像中。该引用来自官方docker文档中有关构建时参数的信息。

警告:不建议使用构建时变量来传递诸如github密钥,用户凭据等机密。构建时变量值对于使用docker history命令的映像的任何用户都是可见的。

有人知道实现相同目标的推荐方法是什么?


问题答案:

使用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


 类似资料:
  • 问题内容: 将表名作为参数放入SQL查询的安全方法是什么?您不能使用PreparedStatement将表名作为参数。可以使用Statement连接字符串以执行具有动态表名称的查询,但是不建议这样做,因为存在SQL注入的风险。最好的方法是什么? 问题答案: 我将尝试解决设计问题,因此您不必动态设置表名。如果无法做到这一点,那么我将进行一种设计,在该设计中,您管理可用表的列表,并且用户从中选择一个表

  • 将表名作为参数放入SQL查询的安全方法是什么?不能使用PreparedStatement将表名作为参数。使用语句串联字符串以执行具有动态表名的查询是可能的,但不建议这样做,因为存在SQL注入的风险。最好的方法是什么?

  • 问题内容: 现在,会将用作参数传递给方法。多个线程并行调用同一方法。我们可以安全地说此代码是线程安全的吗? 有两种情况: 如果在线程之间共享 如果每个线程都有自己的副本 问题答案: 不,你不能这么说。方法参数是线程局部的,这意味着每个参数都有其自己的参考变量副本,但是,如果您从多个线程中使用相同的对象调用此方法,则参数将在它们之间共享(请记住,Java是通过以下方式传递的:值)。在这种情况下,您需

  • 问题内容: 我需要知道方面中的.jar的名称,以便可以通过@DeclareParents使用它创建一个字符串字段。 我知道我可以将事情传递给AJC编译器,但实际上可以使用从方面传递的参数吗?最终结果应该是带有附加字段的类,其中包含我的.jar名称作为值。 更新: 建议测试。Gson.jar是类路径上的.jar 输出: 似乎一次只能有一个MANIFEST.MF资源,而AspectJ.jar恰好位于类

  • Docker的安装是比较简单的,笔者原本不想过多提及;但是看到有不少读者对Docker的安装提出了疑问,故此进行一个安装的总结。 对于Linux用户可以借助其发行版的Linux包管理工具安装,对于Windows和MAC用户相对麻烦一些,笔者下面以Windows7系统为例,讲述安装过程。笔者强烈建议大家使用Linux系统进入本章的学习,第一是比较符合目前Docker的市场趋势,第二Docker本身就

  • 我会收到错误消息: 现在,我的docker版本是17.06,根据这一页,[docker:“build”需要一个参数。参见'docker build--help',我应该可以指定一个位于不同目录下的Dockerfile,所以我不知道问题是什么。 编辑:我通过以下操作创建了符号链接: 我想我不需要把。最后,由于我用-f指定了Dockerfile,但发现了错误。