docker-compose.yml 规范 3.1 版引入了对 secrets 的支持。
我试过这个:
version: '3.1'
services:
a:
image: tutum/hello-world
secret:
password: the_password
b:
image: tutum/hello-world
$ docker-compose up
返回:
Unsupported config option for services.secret: 'password'
我们如何在实践中使用秘密功能?
原文由 Eric 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以 从官方文档中阅读相应的部分。
要使用机密,您需要在
docker-compose.yml
文件中添加两件事。首先,定义所有机密的顶级secrets:
块。然后,在每个服务下的另一个secrets:
块指定服务应该接收 哪些 秘密。例如,创建 Docker 可以理解的两种机密: 外部 机密和 文件 机密。
1.使用
docker secret create
创建一个“外部”秘密第一件事:要在 Docker 中使用机密,您所在的节点必须是 swarm 的一部分。
接下来,创建一个“外部”机密:
(确保包括最后的破折号,
-
。很容易错过。)2. 将另一个秘密写入文件
3. 创建一个
docker-compose.yml
文件同时使用这两个秘密现在已经创建了两种类型的秘密,这里是
docker-compose.yml
文件,它将读取这两种类型并将它们写入web
服务:Docker 可以从它自己的数据库(例如用
docker secret create
制作的秘密)或文件中读取秘密。上面显示了这两个示例。4. 部署您的测试堆栈
使用以下命令部署堆栈:
这将创建
web
服务的一个实例,名为secret_test_web
。5.验证服务创建的容器是否有两个secret
使用
docker exec -ti [container] /bin/sh
验证机密是否存在。(注意:在下面的
docker exec
命令中,m2jgac...
部分在您的机器上会有所不同。运行docker ps
以查找您的容器名称。)如果一切顺利,我们在第 1 步和第 2 步中创建的两个秘密应该在我们部署堆栈时创建的
web
容器中。