Docker Swarm集群secrets中管理敏感数据

在Swarm集群中管理敏感数据

以往管理敏感数据的姿势通常是 **放镜像中、设置环境变量、volume动态挂载等。Docker目前提供了secrets管理功能,用户可以在Swarm集群中安全地管理密码、**证书等铭感数据,并允许在多个Docker容器实例之间共享访问指定的敏感数据。

Ps: secret 可以在Docker Compose中使用。

 

创建secret

openssl rand -base64 20 | docker secret create xxxxpassword -

然后docker secret ls查看结果

Docker Swarm集群secrets中管理敏感数据

 

然后在创建服务的时候可以这么引入(随便起一个redis)

docker service create \

--name redis \

--secret source=xxxxpassword,target=xxxxpassword \

redis:3.0.6

 

一但出现--secret引入,并且如果target不写路径就会默认在容器的

/run/secrets 下生成文件,比如上面的那个redis,创建之后直接 docker exec -it xxxxx bash

登录上去之后,cd到/run/secrets下:

Docker Swarm集群secrets中管理敏感数据

 

也可以在docker-compose.yml里面用,如下:

Docker Swarm集群secrets中管理敏感数据

 

执行这个安装docker stack deploy -c docker-compose.yml nginx

 

Ps: 注意格式,注意版本号别太低。

docker exec -it xxx bash 登录到容器上之后

Docker Swarm集群secrets中管理敏感数据

 

还有就是如果是上面的secret相关都是通过命令行creat创建的,如果是本地文件的话,yml文件可以这么写:

Docker Swarm集群secrets中管理敏感数据

 

我重新部署了一遍。最终在容器上(注意是跑起来的容器里面)可以看到这个

Docker Swarm集群secrets中管理敏感数据

 

OK secret相关就整理到这。书上的例子既复杂又跑不起来,折腾了好久。上面的例子是我自己简化的。希望能理解用法。