所以,我试图不在dockerfile上放置敏感信息。逻辑方法是将ebs配置(GUI)中的信用作为ENV变量。但是,docker build似乎无法访问ENV变量。有什么想法吗?
FROM jupyter/scipy-notebook
USER root
ARG AWS_ACCESS_KEY_ID
RUN echo {$AWS_ACCESS_KEY_ID}
答案 0 :(得分:0)
放置敏感信息(供Dockerfile使用)可以是允许运行图像的特定步骤(构建时间),也可以是生成的图像在运行时仍保留该秘密。
对于运行时,如果您可以在群集模式配置中使用最新的docker 1.13,则可以manage secrets that way
但第一种情况(构建时间)通常用于将凭据传递给http_proxy
,这可以通过--build-arg
完成:
docker build --build-arg HTTP_PROXY=http://...
此标志允许您在Dockerfile的RUN指令中传递像常规环境变量一样访问的构建时变量。
此外,这些值不会像ENV值那样持续存在于中间或最终图像中。
在这种情况下,您不会使用ENV
,but ARG
:
ARG <name>[=<default value>]
ARG
指令定义了一个变量,用户可以使用--build-arg <varname>=<value>
标志使用docker build命令在构建时将其传递给构建器
答案 1 :(得分:0)
我假设您为每个部署创建一个新的Dockerrun.aws.json文件,其中包含该部署的正确docker image标记。在部署阶段,您可以注入环境值,然后由EB代理在docker run
命令中使用这些值。因此,您的docker容器现在可以访问这些环境变量。