Docker Swarm 基础操作,有这一篇文档就可以了

我算是一个极保守的运维, 对于新技术,我会去学习,去研究,但却很少去使用。运维是一个不断需要学习的职位,但却不是一个可以随意折腾的工种。新的技术,新的方案可能会对我们的工作,对我们的架构有更好的帮助,但我们使用时候,更应该谨慎的实施,我们需要仔细的考虑一些问题,比如现有架构或技术是否有升级的必要;运维人员对新技术的掌握程度;升级带来多大的风险;在一切都是Yes的情况下,我们又要敢于承担责任,大胆的实施。


Docker Swarm 包涵两个集群功能和微服务应用编排引擎两方面。集群即指由多个Docker节点组成;编排引擎则指swarm自身提供丰富的API来管理微服务。在应用层面来说,简单来讲即是使用命令(api)来部署和管理微服务的swarm集群。


Docker Swarm 基础操作,有这一篇文档就可以了


前期你需要注意什么

1. 服务器将磁盘分为数据盘与系统盘,将Docker swarm 的数据目录修改为数据盘,严禁放入系统盘,否则会造成节点假死

2. 在各个节点之间开放Docker swarm 内部使用端口,否则会造成集群之间通信失败。即以下端口

  1. 2377/tcp:用于客户端与 Swarm 进行安全通信。
  2. 7946/tcp 与 7946/udp:用于控制面 gossip 分发。
  3. 4789/udp:用于基于 VXLAN 的覆盖网络。

3. 为了安全考虑,最好不要使用Root用户操作,将普通用户加入docker组即可。

4. Docker Swarm 使用Raft共识算法来实现管理节点的HA, 所以管理节点需要部署奇数个,建议3或5个。请自行查看Raft共识算法的一些知识。

5. Docker Swarm管理命令只可以在管理节点执行,工作节点不可使用。

Docker Swarm集群操作

切换到Swarm模式,并将此服务器设置为第一个管理节点

[xcc@xcc ~]$ docker swarm init


查看节点序列

[xcc@xcc ~]$ docker swarm join --token xxxxxxx xx.xx.xx.xx:2377


查看加入集群的token, worker为使加入节点作为工作节点, manager为使加入节点作为管理节点

[xcc@xcc ~]$ docker swarm join-token worker|manager

如:

[xcc@xcc ~]$ docker swarm join --token xxxxxxx xx.xx.xx.xx:2377


将节点加入集群

[xcc@xcc ~]$ docker swarm join --token xxxxxxx xx.xx.xx.xx:2377

docker swarm join \\

--token SWMTKN-1-5ibimzdof5ez8ej6sdudinmm8s79urmm6h28x1pnu02rasiyxa-1j9bsv6feebnumq386sngy647 \\

192.168.0.103:2377

离开(退出)此集群

离开(退出)此集群[xcc@xcc ~]$ docker swarm leave 

DockerSwarm 服务操作


服务是Docker Swarm中最小的调试单元, 即使用docker service create创建的单元,它是基于容器进行封装,被称为副本或任务,服务中包括扩缩容,滚动升级及回滚等特性。

创建一个新的服务

[xcc@xcc ~]$  docker service create

[xcc@xcc ~]$ docker service create --name test_1-p 8080:8080 --replicas 5 nginx

即创建一个有5个副本,名称为test_1的Nginx集群,集群将内部8080端口映射为外部此端口。

注:

  1. 此命令有丰富 的参数,如: --network 指定网络
  2. Docker swarm会轮询检查各个服务,如果状态不一致,则其会自动调整,如某个副本退出,则swarm会自动启动一个副本,以达到配置的要求
  3. 默认为副本模式,也可使用全局模式,此模式下一个docker节点固定的只启动一个副本


查看所有的服务

[xcc@xcc ~]$ docker service ls


查看服务副本列表及各副本的状态。

[xcc@xcc ~]$ docker service ps test_1


查看服务详细的信息

[xcc@xcc ~]$ docker service inspect --pretty test_1


通过调整最后的数字,对服务进行扩容或者缩容

[xcc@xcc ~]$ docker service scale test_1=10


滚动升级

[xcc@xcc ~]$ docker service update --imageredis test_1


回退到上一个版本

命令: docker service logstest_1


查看test_1的日志

[xcc@xcc ~]$ docker service logstest_1


删除test_1服务

[xcc@xcc ~]$ docker service rm test_1



分享到:


相關文章: