Secret 的使用场景 - 每天5分钟玩转 Docker 容器技术(109)
我们可以用 secret 管理任何敏感数据。这些敏感数据是容器在运行时需要的,同时我们不又想将这些数据保存到镜像中。
secret 可用于管理:
-
用户名和密码。
-
TLS 证书。
-
SSH 秘钥。
-
其他小于 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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何使用 stack?- 每天5分钟玩转 Docker 容器技术(112)
定义好了 stack YAML 文件,就可以通过docker stack deploy命令部署应用。 Docker 会按照 YAML 的内容来创建各种资源。为了不重名,所有资源都会加上 stack 名称作为前缀,我们这里是wpstack_*。 部署完成后可以通过相关命令查看各种资源的状态。 如果想更新 stack 的某些属性,直接修改 YAML 文件,然后重新部署。比如将 WordPress 的端口由8000改为8888。 再次执行docker stack deploy命令。 stack 更新成功。查看 servicewpstack_wordpress的信息,确认端口已经更新为8888: 为了更新端口,swarm 启动了一个新的wpstack_wordpress容器,之前的容器已经被 shutdown。 要删除 stack 也很简单: docker stack rm会将 stack 相关的所以资源清除干净。 下一节我们总结一下 stack 的优点。 书籍: 1.《每天5分钟玩转Docker容器技术》https://item.jd.com/16936307278.html2.《每天5...
- 下一篇
如何使用 Secret?- 每天5分钟玩转 Docker 容器技术(108)
我们经常要向容器传递敏感信息,最常见的莫过于密码了。比如: dockerrun-eMYSQL_ROOT_PASSWORD=my-secret-pw-dmysql 在启动 MySQL 容器时我们通过环境变量MYSQL_ROOT_PASSWORD设置了 MySQL 的管理员密码。不过密码是以明文的形式写在docker run命令中,有潜在的安全隐患。 为了解决这个问题,docker swarm 提供了 secret 机制,允许将敏感信息加密后保存到 secret 中,用户可以指定哪些容器可以使用此 secret。 如果使用 secret 启动 MySQL 容器,方法是: 在 swarm manager 中创建 secretmy_secret_data,将密码保存其中。 echo"my-secret-pw"|dockersecretcreatemy_secret_data- 启动 MySQL service,并指定使用 secretmy_secret_data。 dockerservicecreate\ --namemysql\ --secretsource=my_secret_data,t...
相关文章
文章评论
共有0条评论来说两句吧...