【问题标题】:Environment variables passed to docker run传递给 docker run 的环境变量
【发布时间】:2017-01-22 10:49:56
【问题描述】:

我有一个部分可以工作的 docker 映像。为了让它充分发挥作用,我必须运行

sudo docker run -d -p 80 --name myimage -e ADMIN_USER="user1" -e ADMIN_PASSWORD='password1' leonixyz/myimage:1.0

第一次执行图像时,我的代码会在内部配置应用程序。

这很方便,因为每次我需要一个新的应用程序实例,每次都必须为不同的用户配置,我可以将不同的环境变量传递给docker run,我的代码将专门为新用户。

不幸的是,我发现这些变量无法从容器中删除。

如果我这样做:

sudo docker exec -it <container_id> bash

然后我可以看到变量 ADMIN_USERADMIN_PASSWORD (显然)仍然存在。

我尝试在一次性配置代码的末尾unset ADMIN_PASSWORD,但它不起作用。

在正在运行的容器中从 bash shell 运行 unset ADMIN_PASSWORD 也不起作用。

有没有办法在容器启动后从容器中删除环境变量?

谢谢


编辑 正如所指出的,最好不要通过环境变量传递秘密,这里解释了一个很好的解决方法https://github.com/docker/docker/issues/13490#issuecomment-162125128

【问题讨论】:

    标签: docker environment-variables


    【解决方案1】:

    “取消设置”保存凭据的环境变量的唯一合理方法是首先不设置它们。一般来说,不要将环境变量用于凭据或“秘密”。

    以下提供了一个很好的总结:https://github.com/docker/docker/issues/13490

    【讨论】:

    【解决方案2】:

    相反的方法呢?除了在运行时传递环境变量之外,您还可以将入口点设置为如下所示:

        ENTRYPOINT export ADMIN_USER="user1" \
                   && export ADMIN_PASSWORD='password1' \
                   && entrypoint.sh
    

    另一种方法是将所需的变量作为实际参数传递给您的入口点脚本。

    【讨论】:

      【解决方案3】:

      如果您必须设置环境变量(无论出于何种原因),现在Dockerfile best practices 已对此进行了介绍。

      FROM alpine
      RUN export ADMIN_USER="mark" \
          && echo $ADMIN_USER > ./mark \
          && unset ADMIN_USER
      CMD sh
      

      【讨论】:

        【解决方案4】:

        您现在(2020 年 9 月)可以通过

        传递不属于最终图像的变量
        docker build --no-cache --progress=plain --secret id=mysecret,src=mysecret.txt
        

        与 Dockerfile 相关联,包括

        # shows secret from default secret location:
        RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret
        

        这使用docker build with BuildKit

        在“Docker and securing passwords”查看更多信息。

        【讨论】:

          猜你喜欢
          • 2021-04-17
          • 1970-01-01
          • 2020-11-07
          • 2022-08-16
          • 2021-06-25
          • 2018-09-18
          • 2019-06-02
          • 2018-03-24
          • 2015-09-18
          相关资源
          最近更新 更多