Docker Secret(10)

Docker Secret

https://docs.docker.com/engine/reference/commandline/secret/

1、什么secret

用户名密码
SSH Key
TLS认证
任何不想让别人看到的数据

2、Docker Swarm Mode Architecture

secret在docker中是如何管理的呢?
image.png
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
posted @ 2022-11-22 15:07  yutoujun  阅读(84)  评论(0编辑  收藏  举报