前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 集群管理 - Swarm模式

Docker 集群管理 - Swarm模式

作者头像
崔哥
发布2024-01-26 10:57:01
900
发布2024-01-26 10:57:01
举报
文章被收录于专栏:崔哥的专栏崔哥的专栏

Docker Swarm和Docker Compose都是由Docker官方提供的容器编排工具。它们之间的区别在于,Docker Compose主要用于在单个服务器或主机上创建多个容器,而Docker Swarm则可以在多个服务器或主机上创建容器集群服务。特别是在微服务的部署场景下,Docker Swarm显然更为适用,因为它能够实现在分布式环境中轻松管理和扩展容器服务。

准备

Swarm、Swarmkit和Swarm模式傻傻分不清

https://www.linuxprobe.com/swarm-swarmkit.html

https://sreeninet.wordpress.com/2016/07/14/comparing-swarm-swarmkit-and-swarm-mode/

3台服务器

节点

角色

IP

node1

manager

192.168.0.13

node2

worker

192.168.0.12

node3

worker

192.168.0.11

这里我们使用在线服务: https://labs.play-with-docker.com/

开放端口

  • Port 2377 TCP for communication with and between manager nodes
  • Port 7946 TCP/UDP for overlay network node discovery
  • Port 4789 UDP (configurable) for overlay network traffic

Manager 节点初始化

查看docker engine是否已激活swarm模式

代码语言:javascript
复制
docker info | grep Swarm

初始化一个swarm集群

代码语言:javascript
复制
[node1] (local) root@192.168.0.13 ~
$ docker swarm init --advertise-addr 192.168.0.13
Swarm initialized: current node (kmi05q0oc98hykhpjcd2kcbn2) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-0fta3d58gkcrqp7tf9u5lbhfr7cfilzzp875ixzxswlnep08pa-2hw90l3ykhsltn1hmv6s89ng2 192.168.0.13:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

#再次查看token
docker swarm join-token manager

Node1

加入一个已经存在的swarm集群

代码语言:javascript
复制
docker swarm join --token SWMTKN-1-0fta3d58gkcrqp7tf9u5lbhfr7cfilzzp875ixzxswlnep08pa-2hw90l3ykhsltn1hmv6s89ng2 192.168.0.13:2377

Node2节点

和node1节点的操作一致

服务

以下操作基于 manager 节点

代码语言:javascript
复制
#发布一个服务到集群
docker service create --replicas 1 --name helloworld alpine ping docker.com

#服务列表
docker service ls

#查看服务运行在哪个节点
docker service ps helloworld

#服务详情
docker service inspect --pretty helloworld

#容器列表
docker ps

#扩容
docker service scale helloworld=5

#删除服务
docker service rm helloworld

再发布一个服务到集群

代码语言:javascript
复制
docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6

将redis:3.0.6滚动升级为redis:3.0.7

代码语言:javascript
复制
docker service update --image redis:3.0.7 redis

node

代码语言:javascript
复制
#节点列表
docker node ls

#清空一个节点
docker node update --availability drain node2

#节点详情
docker node inspect --pretty node2

#恢复一个节点
docker node update --availability active node2

使用compose文件

代码语言:javascript
复制
#将应用程序部署到 Swarm
docker stack deploy -c bb-stack.yaml demo

#列出服务
docker service ls

#移除服务
docker stack rm demo

Docker Compose文件在普通的Docker环境和Swarm模式下的主要区别

  • 在Swarm模式下,Compose文件的服务定义可能包含更多的配置项,如replicas(副本数)和deploy(部署配置)等。这些配置项用于指定服务在Swarm集群中的运行方式。
  • 在Swarm模式下,你可以使用配置对象来存储敏感信息,以便在服务中共享。这是Swarm模式中一个重要的安全特性。

参考

https://blog.csdn.net/u022812849/article/details/134006815

https://docs.docker.com/engine/swarm/

https://docs.docker.com/compose/compose-file/compose-file-v3/#deploy

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备
    • Swarm、Swarmkit和Swarm模式傻傻分不清
      • 3台服务器
        • 开放端口
        • Manager 节点初始化
        • Node1
        • Node2节点
        • 服务
        • node
        • 使用compose文件
          • Docker Compose文件在普通的Docker环境和Swarm模式下的主要区别
          • 参考
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档