Docker:如何向容器提供秘密信息?

时间:2014-12-18 13:36:02

标签: docker fig

我的应用程序位于容器中,它读取密码和API密钥的环境变量以访问服务。如果我在我的机器上运行应用程序(不在docker中),我只需export SERVICE_KEY='wefhsuidfhda98',应用程序就可以使用它。

这是什么标准方法?我正在考虑使用export命令添加到服务器的秘密文件,然后在该文件上运行source

我使用的是docker&图

2 个答案:

答案 0 :(得分:5)

我解决的解决方案如下:将环境变量保存在一个秘密文件中,然后使用无花果将其传递给容器。

  • 有一个带有秘密信息的secret_env文件,例如

    export GEO_BING_SERVICE_KEY='98hfaidfaf'
    export JIRA_PASSWORD='asdf8jriadf9'
    
  • secret_env
  • 中有.gitignore
  • 为开发人员提供secret_env.template文件,例如

    export GEO_BING_SERVICE_KEY=''  # can leave empty if you wish
    export JIRA_PASSWORD=''  # write your pass
    
  • 在我的fig.yml中,我通过以下方式发送变量:

    environment:
     - GEO_BING_SERVICE_KEY
     - JIRA_PASSWORD
    
  • 在构建
  • 之前致电source secret_env

答案 1 :(得分:4)

docker run提供了环境变量:

docker run -e SERVICE_KEY=wefsud your/image

然后您的应用程序将从环境中读取SERVICE_KEY https://docs.docker.com/reference/run/

在图中,您将使用

environment:
  - SERVICE_KEY: wefsud

在您的应用规范中。 http://www.fig.sh/yml.html

从安全角度来看,如果您的docker二进制文件需要root访问权限,那么前一种解决方案并不比在主机上运行它更糟糕。如果您允许“docker”组用户运行docker,则安全性较低,因为任何docker用户都可以docker inspect运行容器。在主机上运行时,您需要是root用户才能检查正在运行的进程的环境变量。