在容器中使用Docker Secrets

时间:2018-01-04 05:43:57

标签: docker docker-swarm docker-secrets

我正在使用Docker CE 17.09-1。我正在利用Docker Swarm并部署了一个包含多个服务的Stack。

我决定使用Docker Secrets获取各种凭据。我正在运行的服务之一要求我在配置文件中输入数据库用户名和密码。我为每个必需的凭据创建了两个秘密,我在容器中的/run/secrets/下看到了只读文件。如何将这些文件的内容插入到我的配置文件中?我的配置文件是.ini文件,包含许多值。

提前感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

我之前考虑的是修改我的ENTRYPOINTCMD脚本,以便该脚本修改或生成我的本地配置文件(模板),并使用{}运行时读取的机密值进行评估{1}}。

然后,一旦配置文件被正确生成/估值,相同的脚本就会在前台启动服务。

答案 1 :(得分:1)

取决于服务,您也许可以在环境变量中设置秘密文件的路径(在/ run / secrets之内),或者指向.ini文件中的秘密文件或挂载秘密文件图片在哪里等待秘密

有关前者的示例,请查看Docker Hub上的mysql映像- 如https://hub.docker.com/_/mysql/所示:

  

作为替代   通过环境变量传递敏感信息,_FILE可能是   附加到先前列出的环境变量中,导致   初始化脚本,用于从中加载这些变量的值   容器中存在的文件。特别是,这可以用来   从存储在其中的Docker机密加载密码   / run / secrets /文件。

有关后者的示例,请参阅Docker Hub上的Rabbitmq映像。如https://hub.docker.com/_/rabbitmq/所述:

  

如果您希望通过文件提供cookie(例如Docker)   秘密),则需要将其挂载在/var/lib/rabbitmq/.erlang.cookie: