Docker swarm实战总结


Docker swarm实战总结

文章插图
 
一、简介Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源 。
Docker Swarm 包含两方面:一个企业级的 Docker 安全集群,以及一个微服务应用编排引擎 。
集群方面,Swarm 将一个或多个 Docker 节点组织起来,使得用户能够以集群方式管理它们, 可以自如地添加或删除节点  。
编排方面,Swarm 提供了一套丰富的 API 使得部署和管理复杂的微服务应用变得易如反掌 。通过将应用定义在声明式配置文件中,就可以使用原生的 Docker 命令完成部署 。
此外,甚至还 可以执行滚动升级、回滚以及扩缩容操作 ,同样基于简单的命令即可完成 。
以往,Docker Swarm 是一个基于 Docker 引擎之上的独立产品 。自 Docker 1.12 版本之后, 它已经完全集成在 Docker 引擎中 ,执行一条命令即可启用 。
到2018年,除了原生 Swarm 应用,它还可以部署和管理 Kubernetes 应用 。Swarm 和 Kubernetes 比较类似,但是更加轻,具有的功能也较 kubernetes 更少一些 。
集群管理: docker swarm 子命令有 init, join, leave, update (docker swarm --help查看帮助)
节点管理: docker node子 命令有 accept, promote, demote, inspect, update, tasks, ls, rm (docker node --help查看帮助)
配置管理: docker config 子命令有 create, inspect, ls, rm (docker config--help查看帮助)
服务管理: docker service 子命令有 create, inspect, update, remove, tasks, ls, rm, ps (docker service--help查看帮助)
堆栈管理: docker stack 子命令有 deploy, services, ps, rm (docker stack--help查看帮助)
二、部署
Docker swarm实战总结

文章插图
 
前期工作准备几台机器,安装 docker v1.12+ ,添加私有镜像仓库源
/etc/docker/daemon.json{ "insecure-registries":["xxx.xxx.xxx.xxx:5000"] }集群节点之间保证 TCP 2377、TCP/UDP 7946和UDP 4789 端口通信(或者直接关闭防火墙 systemctl stop firewalld)
firewall-cmd --zone=public --add-port=2377/tcp --permanent # 集群管理端口firewall-cmd --zone=public --add-port=7946/tcp --permanent # 节点之间通讯端口 firewall-cmd --zone=public --add-port=7946/udp --permanentfirewall-cmd --zone=public --add-port=4789/tcp --permanent # overlay网络通讯端口 firewall-cmd --zone=public --add-port=4789/udp --permanentfirewall-cmd --reload 
初始化swarmdocker swarm init#默认初始化节点为manager--advertise-addr 192.168.89.14# 多网卡的情况下,指定需要使用的ip--listen-addr 192.168.89.14:2377 # 指定监听的 ip 与 port
Docker swarm实战总结

文章插图
 
添加工作节点--token 初始化时获取,或者通过命令获取( docker swarm join-token worker )
docker swarm join --advertise-addr 192.168.89.15--listen-addr 192.168.89.15:2377#可不加,根据实际需求--token SWMTKN-1-29ynh5uyfiIOSpy4fsm4pd4xucyji2rn0oj4b4ak4s7a37syf9-ajkrv2ctjr5cmxzuij75tbrmz# 节点token192.168.89.14:2377 # 管理节点 
管理节点docker node ls # 查看节点docker node rm # 移除节点docker swarm leave # 退出节点(对应节点上运行)
Docker swarm实战总结

文章插图
 
更详细部署推荐>>> Docker Swarm集群部署实践
三、Docker config17.06引入了群体服务配置,使您可以在服务映像之外或运行中的容器之外存储非敏感信息,例如配置文件 。这使您可以保持映像尽可能通用,而无需将安装文件绑定安装到容器中或使用环境变量 。
可以随时在服务中添加或删除配置,并且服务可以共享配置 。您甚至可以将配置与环境变量或标签结合使用,以实现最大的灵活性 。配置值可以是通用字符串或二进制内容( 最大500 kb) 。
注意:Docker配置 仅适用于群集服务 ,不适用于独立容器 。
将配置添加到群集时,Docker会通过双向TLS连接将配置发送到群集管理器 。该 配置存储在Raft日志中 ,该日志已加密 。整个Raft日志会在其他管理器之间复制,以确保对配置的高可用性保证与其他集群管理数据一样 。
当您授予对配置的新创建或正在运行的服务访问权限时,该配置将作为文件安装在容器中 。容器中安装点的位置默认为 /<config-name> linux容器中的位置 。


推荐阅读