『中级篇』Docker-Secret管理和使用(51)

版权声明: https://blog.csdn.net/zhugeaming2018/article/details/82285650

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『中级篇』Docker-Secret管理和使用(51)

之前咱们写的docker-compose.yml里面,里面有mysql的时候有变量MYSQL_ROOT_PASSWORD: root,如果别人拿到了这个文件直接root是不是就暴露了,很不安全,针对这个问题,docker-secret都替咱们解决了。源码:https://github.com/limingios/docker/tree/master/No.5/labs/wordpress

什么secret
  • 用户名密码
  • SSH Key
  • TLS认证
  • 任何不想让别人看到的数据
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就可以了。

secret management
  • 存在swarm manager 节点raft database里面
  • secret 可以assign给一个service,这个service就能看到这个secret
  • 在container内部secret看起来像文件,但是实际是在内存中
secret 创建
cd labs/secret-example
pwd
#编辑password文件,按照你自己的要求写入密码保存
vi password

docker secret ls
#通过docker secret create 名称 文件名
docker secret create my-pw password
docker secret ls
#管道的方式复制
echo 'adminadmin2' | docker secret create my-pw2 -
docker secret ls

docker secret ls
docker secret rm my-pw2
docker secret ls

service 使用secret

#指定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  92fe68ea886d
#进入run/secrets目录
cd /run/secets/
cat my-pw

上边的是传入一个 如果需要传入多个的话,就需要加入 –secret 名称1 –secret 名称2

看看官网的实例

/mysql/”>https://hub.docker.com//mysql/

通过官网创建mysql看效果
docker service create --name db --secret my-pw -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/my-pw mysql
docker service ls
#发现运行到work2 上边了,咱们去work2看看
docker service ps db
#在work2上查看容器信息
docker ps

进入work2

docker ps
docker exec -it fceb5ba1cbac sh
cd /run/secrets/
cat my-pw
mysql -u root -p
#输入上边密码adminadmin

image.png

stack中的应用
cd labs/secret-example
pwd
#截图看到的,引用了secret的方式,前提是已经通过上边说的docker secret create 创建了对应的密码名称
cat docker-compose.yml

在这个docker-compose最下面有个有三行注释,如果放开的话这是引用了外部密码文件的形式创建docker secret,这种方式虽然省事了,但是有安全隐患,里面多了个passwd文件,最好的方式还是通过docker secret create的方式。

运行方式还是跟之前一样的,只是修改了配置文件。

docker stack deploy wordpress -c=docker-compose.yml

PS:网络现在很发达,密码一定要好好的保存,在公司内部开发安全也是首位,所以本节至关重要!


往期精彩
  1. docker导学(一)
  2. 容器的技术概述(二)
  3. docker的魅力初体验-5分钟安装wordpress不走弯路(三)
  4. docker官网介绍(四)
  5. 如何在mac上安装docker(五)
  6. 如何在window上安装docker(六)
  7. 如何在mac上通过vagrant安装虚拟机(七)
  8. 如何在window上通过vagrant安装虚拟机(八)
  9. docker-Machine的本地使用(九)
  10. docker-Machine的本地使用(十)
  11. 在linux/mac下通过Docker-Machine在阿里云上的使用(11)
  12. docker架构和底层技术(12)
  13. docker Image概述(13)
  14. 手动建立一个base Image(14)
  15. 什么是Container(15)
  16. 构建自己的Docker镜像(16)
  17. Dockerfile详解(17)
  18. 镜像的发布(18)
  19. Dockerfile实战(19)
  20. 容器的操作(20)
  21. Dockerfile实战CMD和ENTRTYPOINT的配合(21)
  22. 容器的资源限制(22)
  23. docker网络(23)
  24. docker学习必会网络基础(24)
  25. Linux网络命名空间(25)
  26. Docker Bridge详解(26)
  27. 容器之间的Link(27)
  28. 容器的端口映射(28)
  29. 容器网络之host和none(29)
  30. 多容器复杂应用的部署(30)
  31. overlay网络和etcd实现多机的容器通信(31)
  32. docker的数据持久化存储和数据共享(32)
  33. windows下vagrant 通过SecureCRT连接centos7(33)
  34. 数据持久化之Data Volume(34)
  35. 数据持久化之bind Mounting(35)
  36. docker 使用bind Mounting实战(36)
  37. docker容器安装wordpress(37)
  38. docker Compose到底是什么(38)
  39. Docker Compose的安装和基本使用(39)
  40. Docker 水平扩展和负载均衡(40)
  41. Docker compose 部署一个复杂的应用(41)
  42. 容器编排Docker Swarm介绍(42)
  43. docker-swarm创建一个多节点集群(43)
  44. play with docker 的使用(44)
  45. docker-swarm中的Service创建维护和水平扩展(45)
  46. 在docker-swarm集群里通过serivce部署wordpress(46)
  47. 集群服务间通信之RoutingMesh(47)
  48. RoutingMesh之Ingress负载均衡(48)
  49. Docker-Stack部署wordpress(49)
  50. 『中级篇』Docker-Stack部署投票应用(50)

阅读更多
换一批

没有更多推荐了,返回首页