Docker Secret
https://docs.docker.com/engine/reference/commandline/secret/
1、什么secret
用户名密码
SSH Key
TLS认证
任何不想让别人看到的数据
2、Docker Swarm Mode Architecture
secret在docker中是如何管理的呢?
docker swarm里面有2个角色Manager 和 Worker,Worker这个节点有个内置的分布式存储,它是基于raft协议,强一致性的,唯一性,可以让manager下面的节点相互之前可以完成同步,manager这个在生产环境下强烈建议是2个manager,如果是一个是单点故障了,Internal分布式存储的它是加密之后放入硬盘的,天然的加密环境,manager和worker节点是通过TLS进行加密的。他们的key都是存在内置节点的分布式数据库节点上,通过加密以后存储在硬盘上的,我想存一些secret可以直接存在manager内置的分布式节点上边,比如一个数据库需要一个密码,我可以给它一个分布式数据库读取的权限。能够访问到这个secret就可以了。
3、secret management
- 存在swarm manager 节点raft database里面
- secret 可以assign给一个service,这个service就能看到这个secret
- 在container内部secret看起来像文件,但是实际是在内存中
创建方式
- 通过文件创建
- 通过管道的方式复制
#通过文件创建
#编辑password文件,按照你自己的要求写入密码保存
vi password
#通过docker secret create 名称 文件名
docker secret create my-pw password
#通过管道的方式复制
echo 'admin123' | docker secret create my-pw2 -
# 查看
docker secret ls
# 删除secret
docker secret rm my-pw2
#指定secret的名称
docker service create --name client --secret my-pw busybox sh -c "while true;do sleep 36000;done"
docker service ls
docker service ps client
docker container ls
#进入这个container中
docker exec -it containerID sh
#进入run/secrets目录
cd /run/secets/
cat my-pw
标签:10,service,secret,节点,manager,Docker,my,docker,Secret
From: https://www.cnblogs.com/yutoujun/p/16915199.html