我们可以用 secret 管理任何敏感数据。这些敏感数据是容器在运行时需要的,同时我们不又想将这些数据保存到镜像中。

secret 可用于管理:

  1. 用户名和密码。

  2. TLS 证书。

  3. SSH 秘钥。

  4. 其他小于 500 KB 的数据。

secret 只能在 swarm service 中使用。普通容器想使用 secret,可以将其包装成副本数为 1 的 service。

这里我们再举一个使用 secret 的典型场景。

数据中心有三套 swarm 环境,分别用于开发、测试和生产。对于同一个应用,在不同的环境中使用不同的用户名密码。我们可以在三个环境中分别创建 secret,不过使用相同的名字,比如 username 和 password。应用部署时只需要指定 secret 名字,这样我们就可以用同一套脚本在不同的环境中部署应用了。

除了敏感数据,secret 当然也可以用于非敏感数据,比如配置文件。不过目前新版本的 Docker 提供了 config 子命令来管理不需要加密的数据。config 与 secret 命令的使用方法完全一致。

Secret 的安全性

当在 swarm 中创建 secret 时,Docker 通过 TLS 连接将加密后的 secret 发送给所以的 manager 节点。

secret 创建后,即使是 swarm manager 也无法查看 secret 的明文数据,只能通过 docker secret inspect 查看 secret 的一般信息。

只有当 secret 被指定的 service 使用是,Docker 才会将解密后的 secret 以文件的形式 mount 到容器中,默认的路径为/run/secrets/<secret_name>。例如在前面 MySQL 的例子中,我们可以在容器中查看 secret。

 

当容器停止运行,Docker 会 unmount secret,并从节点上清除。

下一节我们再通过一个更加综合例子加深对 Secret 的理解。

书籍:

1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

最新文章

  1. MySQL命令行登录的例子
  2. window10的优缺点
  3. UVALive 5903 Piece it together(二分图匹配)
  4. PAT A 1013. Battle Over Cities (25)【并查集】
  5. text属性
  6. jenkins邮件模板
  7. Orcale(一)概念
  8. 用DateTime.ToString(string format)输出不同格式的日期
  9. on使用详解
  10. CF 741D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths [dsu on tree 类似点分治]
  11. java-数据库连接,分层实现增删改查测试
  12. OpenGL学习笔记:第一个OpenGL程序
  13. jmeter常见问题汇总
  14. org.springframework.cache.interceptor.SimpleKey cannot be cast to java.lang.String
  15. java责任链模式及项目实际运用
  16. 【CF666E】Forensic Examination 广义后缀自动机+倍增+线段树合并
  17. 菜鸟脱壳之脱壳的基础知识(四)——利用ESP定律来寻找OEP
  18. 选择器:first-child与:last-child失效的解决方法
  19. python函数之第一类对象
  20. day20 Python 高阶函数,函数,嵌套,闭包 装饰器

热门文章

  1. mysql别名的使用
  2. Android 开发笔记___Application操作全局变量
  3. 使用SQLPLUS创建用户名和表空间
  4. 自定义Base16加密
  5. Python的property装饰器的基本用法
  6. 零基础如何迅速学习HTML5?新手小白学习web前端H5自白!
  7. Java8 ArrayList源码分析
  8. 深入学习JS执行--单线程的JS
  9. python 实用案例 supervisord管理进程详解
  10. 《java.util.concurrent 包源码阅读》04 ConcurrentMap