特别提示:本文使用docker最新版本docker-18.04.0-CE,版本太旧可能不支持本文演示的功能。参考文档:https://docs.docker.com/engine/swarm/secrets/
- 什么是docker secret?
敏感数据包括密码、私钥、证书及其它所有不能以明文的形式在网络上传输,或者是不能保存在各种文件中的数据,例如Dokerfile、image等。从docker 1.13开始,可以通过secret功能集中的保存与分发这些敏感数据,一个secret只允许被授权的服务在运行的时候访问,另外只有在集群模式下才能使用secret功能。docker以加密的形式保存与传输敏感数据,并且敏感数据会以分布式的形式存储在集群中的所以manager节点上,以提高可用性。
当对一个新建立的或者是运行中的service进行某个secret的授权时,docker会在内存中模拟一个文件,然后将解密后的数据放入文件中,并mount这个文件到容器的文件系统中,默认目录是/run/secrets/<secret_name>。可以在任何时候对一个服务进行授权、撤销操作。
docker secret同时也可以用来管理普通的配置项,但是从Docker 17.06开始,提供了专门用于管理非敏感数据的configs。两者的区别是secret用的是RAM来模拟文件系统保存敏感数据,使用敏感数据的容器是只读的。而config则直接使用普通的文件系统存储非敏感数据。
- docker secret命令: