您可以从官方文档中阅读相应的部分。
要使用机密,您需要在docker-compose.yml
文件中添加两件事。secrets:
首先,定义所有秘密的顶级块。然后,每个服务下的另一个secrets:
块指定服务应该接收哪些秘密。
例如,创建 Docker 可以理解的两种机密:外部机密和文件机密。
1.使用创建一个“外部”秘密 docker secret create
第一件事:要在 Docker 中使用机密,您所在的节点必须是 swarm 的一部分。
$ docker swarm init
接下来,创建一个“外部”机密:
$ echo "This is an external secret" | docker secret create my_external_secret -
(确保包括最后的破折号,-
。很容易错过。)
2. 将另一个秘密写入文件
$ echo "This is a file secret." > my_file_secret.txt
3. 创建一个docker-compose.yml
使用这两个秘密的文件
现在已经创建了两种类型的秘密,下面是一个docker-compose.yml
文件,它将读取这两种类型并将它们写入web
服务:
version: '3.1'
services:
web:
image: nginxdemos/hello
secrets: # secrets block only for 'web' service
- my_external_secret
- my_file_secret
secrets: # top level secrets block
my_external_secret:
external: true
my_file_secret:
file: my_file_secret.txt
Docker 可以从它自己的数据库(例如用 制作的秘密docker secret create
)或文件中读取秘密。上面显示了这两个示例。
4. 部署您的测试堆栈
使用以下命令部署堆栈:
$ docker stack deploy --compose-file=docker-compose.yml secret_test
web
这将创建一个名为的服务实例secret_test_web
。
5.验证服务创建的容器是否有两个secret
用于docker exec -ti [container] /bin/sh
验证机密是否存在。
(注意:在下面的docker exec
命令中,该m2jgac...
部分在您的机器上会有所不同。运行docker ps
以查找您的容器名称。)
$ docker exec -ti secret_test_web.1.m2jgacogzsiaqhgq1z0yrwekd /bin/sh
# Now inside secret_test_web; secrets are contained in /run/secrets/
root@secret_test_web:~$ cd /run/secrets/
root@secret_test_web:/run/secrets$ ls
my_external_secret my_file_secret
root@secret_test_web:/run/secrets$ cat my_external_secret
This is an external secret
root@secret_test_web:/run/secrets$ cat my_file_secret
This is a file secret.
如果一切顺利,我们在步骤 1 和 2 中创建的两个秘密应该web
在我们部署堆栈时创建的容器内。