Ubuntu 20.04如何安装配置Docker Swarm?docker swarm集群部署教程

在Ubuntu 20.04 LTS上部署Docker Swarm,核心在于通过Docker官方脚本快速安装引擎,利用docker swarm init初始化集群,并通过docker node和docker service命令管理节点与服务,从而实现高可用的分布式容器编排。

Docker Swarm作为Docker原生的集群管理和编排工具,其优势在于配置简单、无需额外安装第三方组件,对于中小型企业或开发测试环境,它比Kubernetes更轻量,比单机Docker更稳定,本文将详细拆解从系统准备到服务发布的完整流程,确保你能在Ubuntu 20.04环境中构建起可靠的容器集群。

Ubuntu 24.04 LTS安装 docker 完整过程
加载中
Ubuntu 24.04 LTS安装 docker 完整过程

Ubuntu 20.04环境准备与Docker引擎安装

在开始集群构建前,必须确保基础环境干净且网络通畅,Docker Swarm对系统内核版本和防火墙配置有特定要求,任何配置失误都可能导致节点间通信失败。

系统更新与依赖配置

登录到每一台计划加入集群的Ubuntu 20.04服务器,执行系统更新以获取最新的安全补丁和内核模块。

  1. 更新软件包列表:sudo apt update
  2. 升级已安装的软件包:sudo apt upgrade -y
  3. 安装必要的依赖包,这些包允许apt通过HTTPS使用仓库:sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

业内专家指出,保持内核版本在5.4以上对于容器性能优化至关重要,Ubuntu 20.04默认提供的内核通常满足这一要求,但建议定期关注内核更新。

安装Docker CE

推荐使用Docker官方仓库安装,以确保获取到最新稳定版。

  1. 添加Docker官方GPG密钥:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  2. 设置稳定版仓库:sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  3. 再次更新索引并安装Docker Engine:sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io -y
  4. 启动Docker服务并设置开机自启:sudo systemctl enable docker && sudo systemctl start docker
  5. 验证安装是否成功:

    Ubuntu 20.04如何安装配置Docker Swarm?docker swarm集群部署教程

    docker --version 和 sudo docker run hello-world

若提示权限不足,可将当前用户加入docker组:sudo usermod -aG docker $USER,然后重新登录生效。

Docker Swarm集群初始化与节点管理

集群构建的核心在于区分Manager(管理器)和Worker(工作者)角色,Manager负责集群状态维护和调度决策,Worker负责执行具体任务。

初始化Swarm集群

选择一台性能较强、网络稳定的服务器作为Manager节点,执行以下命令初始化集群:

sudo docker swarm init --advertise-addr <MANAGER_IP>

执行后,终端会输出一段包含docker swarm join命令的提示,这段命令至关重要,它是其他节点加入集群的凭证,请务必妥善保存该命令,特别是其中的Token和IP地址。

行业共识认为,Manager节点的数量应为奇数(如1、3、5个),以确保持有者选举算法(Raft协议)在部分节点故障时仍能正常工作,对于小型集群,单Manager节点即可满足需求,但需注意单点故障风险。

添加Worker节点

在其他服务器上执行Manager节点输出的docker swarm join命令。

sudo docker swarm join --token <TOKEN> <MANAGER_IP>:2377

加入成功后,回到Manager节点,使用以下命令查看所有节点状态:

sudo docker node ls

输出结果中,状态为Ready且Availability为Active的节点即为有效工作节点,若节点状态为Down,请检查网络连通性及防火墙设置。

防火墙与端口配置

Docker Swarm依赖特定端口进行内部通信,Ubuntu默认防火墙(UFW)可能会阻断这些流量,需确保以下端口开放:

  • TCP 2377:集群管理通信
  • TCP/UDP 7946:节点间通信
  • UDP 4789:覆盖网络流量

可通过以下命令开放端口:

sudo ufw allow 2377/tcp
sudo ufw allow 7946/tcp
sudo ufw allow 7946/udp
sudo ufw allow 4789/udp

服务部署与负载均衡实战

Ubuntu 20.04如何安装配置Docker Swarm?docker swarm集群部署教程

集群搭建完成后,核心任务是部署应用,Docker Swarm通过docker service命令管理服务,支持自动扩缩容、滚动更新和健康检查。

创建第一个Swarm服务

以Nginx为例,演示如何创建一个可访问的服务:

sudo docker service create --name web-nginx --replicas 3 -p 80:80 nginx

此命令含义如下:

  • --name web-nginx:服务名称
  • --replicas 3:启动3个副本
  • -p 80:80:将宿主机的80端口映射到容器的80端口
  • nginx:使用的镜像

部署后,可通过sudo docker service ps web-nginx查看任务分布情况,任何一台节点都能通过80端口访问到Nginx服务,Swarm会自动进行负载均衡。

滚动更新与版本管理

在生产环境中,零停机更新是基本要求,Docker Swarm支持滚动更新,即逐个替换旧容器为新容器,确保服务始终可用。

假设需要更新Nginx镜像版本:

sudo docker service update --image nginx:1.21 web-nginx

系统会自动拉取新镜像,并逐个更新正在运行的容器,期间,服务不会中断,用户无感知。

数据持久化配置

对于有状态应用(如数据库),需使用Docker Volume或Bind Mount进行数据持久化,Swarm支持全局卷和副本卷两种模式。

以挂载本地目录为例:

sudo docker service create --name db --mount type=bind,source=/data/db,target=/var/lib/mysql mysql:5.7

需注意,Bind Mount依赖于宿主机路径,若节点重启或迁移,需确保路径存在,对于跨节点迁移场景,建议使用外部存储驱动或云服务商提供的持久化卷。

常见问题排查与维护策略

在实际运维中,网络隔离、资源限制和服务状态异常是最常见的问题。

网络连通性检查

若节点无法加入集群或服务间无法通信,首先检查Overlay网络状态,在Manager节点执行:

sudo docker network ls

确保存在名为ingress和<cluster_id>_overlay的网络,若网络缺失,可能是Swarm初始化失败或网络插件冲突。

Ubuntu 20.04如何安装配置Docker Swarm?docker swarm集群部署教程

日志查看与故障定位

使用docker service logs命令查看服务日志。

sudo docker service logs -f web-nginx

-f参数用于实时跟踪日志输出,若发现错误,如端口冲突或镜像拉取失败,日志会提供明确线索。

资源限制与优化

为避免单个容器占用过多资源,建议在创建服务时设置限制:

sudo docker service create --name app --limit-cpu 0.5 --limit-memory 512M myapp:latest

这能确保集群资源合理分配,防止个别服务耗尽CPU或内存导致其他服务崩溃。

Ubuntu 20.04安装Docker Swarm常见问题解答

Ubuntu 20.04安装Docker Swarm需要多少内存?

Docker Swarm本身对内存消耗较低,但具体需求取决于运行服务的规模,对于仅运行几个轻量级Web服务的单节点集群,2GB内存即可满足基本需求,若运行数据库或高并发应用,建议每节点配置4GB或更高内存,Manager节点因需维护集群状态,建议预留更多资源。

Docker Swarm与Kubernetes在Ubuntu 20.04上的主要区别是什么?

两者核心差异在于复杂度与生态,Docker Swarm配置极简,命令直观,适合小型团队或快速原型开发,学习曲线平缓,Kubernetes功能强大,支持复杂调度、自动扩缩容和多云部署,但配置繁琐,需要掌握YAML定义和Helm包管理,适合大型企业级生产环境,若追求快速上手和简单运维,Swarm是更优选择。

如何备份Docker Swarm集群配置?

Docker Swarm的配置信息存储在Manager节点的Raft日志中,位于/var/lib/docker/swarm目录,定期备份该目录可恢复集群状态,服务定义可通过docker service inspect --pretty <service_name>导出JSON格式配置,便于版本控制和迁移,数据卷需单独备份,Swarm本身不管理业务数据。

通过上述步骤,你可以在Ubuntu 20.04上构建起一个稳定、高效的Docker Swarm集群,关键在于理解节点角色、网络配置及服务生命周期管理,遵循最佳实践,定期维护,即可保障业务连续性。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/ubuntu-20-04%e5%a6%82%e4%bd%95%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%aedocker-swarm%ef%bc%9fdocker-swarm%e9%9b%86%e7%be%a4%e9%83%a8%e7%bd%b2%e6%95%99%e7%a8%8b/

赞 (0)
SiteGround美国主机如何查看CPU资源使用情况?
上一篇 2026年6月20日 00:19
共享流量包客服电话是多少?怎么办理流量包
下一篇 2026年6月20日 00:22

相关推荐

  • 虚拟机查看内存占用到底哪个命令准确,有什么区别?

    看虚拟机内存占用,优先用free -h,配合top或htop看实时进程,其他命令都不如这俩直观,很多人在虚拟机上查内存,习惯打开任务管理器或者云控制台看一眼,但那个数字往往和系统里实际感受对不上,明明显示内存用了80%,可虚拟机里跑着还挺流畅,这到底是哪里出了问题?虚拟机查看内存占用用什么命令最靠谱先说结论:在……

    2026年9月5日
    200
  • 广州ECS云服务器搭建web教程,广州ECS云服务器怎么搭建web

    在广州地区部署Web业务,选择ECS云服务器并完成环境搭建,是实现网站高性能、低延迟与高可用性的最佳路径,广州作为华南地区的核心网络节点,拥有得天独厚的带宽资源与网络互联优势,对于面向珠三角及全国用户的Web应用而言,这里的云基础设施能提供物理层面的极致速度体验,搭建Web环境并非简单的资源堆砌,而是一项需要兼……

    2026年3月30日
    8000
  • 为什么https证书认证失败?https证书认证流程详解

    安装SSL证书不仅是让网址栏出现绿色小锁,更是百度算法中影响排名权重、提升用户信任度以及保障数据安全的必要基础设施,2026年未部署HTTPS的网站将面临严重的流量限制和信任危机,在2026年的互联网生态中,HTTPS(超文本传输安全协议)已经不再是网站可选的“加分项”,而是必须配置的“入场券”,百度搜索引擎在……

    2026年6月3日
    3100
  • WordPress企业主题怎么选?2026年建站热门推荐

    2026年企业建站首选WordPress主题,核心在于兼顾SEO友好度、加载速度及移动端适配,其中Astra、GeneratePress及Flavor等主题因高性能与高可定制性成为行业共识中的标杆选择,企业官网不仅是品牌的线上名片,更是获取精准流量的核心阵地,在2026年的技术环境下,用户对网页加载速度的容忍度……

    2026年6月21日
    2300
  • Access如何连接云服务器?access连接云服务器教程

    Access连接云服务器并非直接操作数据库文件,而是通过配置ODBC数据源或远程桌面协议,将本地Access前端与部署在云端的SQL Server后端进行关联,从而实现数据的稳定读写与协同办公,很多中小企业在数字化转型初期,习惯使用Access作为单机版数据库,因为它上手快、成本低,但当业务扩展到需要多人协作……

    2026年7月1日
    1300
  • html文字框怎么设置?html文字框代码怎么写

    HTML文字框(input和textarea)是网页交互的基础组件,通过合理配置type属性、placeholder占位符及CSS样式,可实现从单行输入到多行文本编辑的多样化需求,同时需特别注意移动端适配与无障碍访问标准,在构建现代Web应用时,开发者往往容易忽视基础表单控件的细微差别,HTML文字框不仅仅是让……

    2026年6月7日
    4000
  • Access数据库还原失败怎么办?Access数据库备份与恢复教程

    Access数据库还原的核心在于使用“外部数据”功能中的“导入”或“附加”选项,将备份文件(.mdb/.accdb)合并到当前工作库,或直接替换源文件以恢复至指定时间点,很多用户在面对数据丢失或系统崩溃时,第一反应往往是惊慌失措,试图寻找某种“一键恢复”的神秘按钮,Microsoft Access并没有像某些商……

    2026年7月1日
    3110
  • access数据库查询数据类型是什么?access数据库字段类型有哪些

    Access数据库查询数据类型主要涉及文本、数字、日期/时间、是/否、OLE对象、附件、超链接及复合数据类型,正确选择类型能显著优化查询性能与数据完整性,在构建本地或小型网络数据库时,数据类型不仅仅是存储格式的定义,更是逻辑约束的基石,很多初学者习惯将所有字段都设为“文本”,这看似省事,实则埋下了性能隐患和数据……

    2026年7月3日
    710
  • 高级机房服务器都包括哪些,如何挑选性价比高的?

    高级机房服务器并不单指某一款设备,而是按部署环境、业务负载和运维等级划分的四大类:机架式服务器、刀片服务器、GPU计算型服务器和高密度存储服务器,其中机架式是绝对主力,机房服务器的物理形态怎么选高级机房和普通办公室的最大区别在于供电、散热和空间利用率,机柜高度以U为单位,1U等于44.45毫米,这个标准决定了服……

    服务器宽带 2026年10月21日
    200
  • HTML适合做什么服务器?html适合做哪种服务器

    HTML本身不具备服务器功能,它无法独立处理动态请求或运行后端逻辑,仅适合用于构建静态网页或作为前端资源托管于Nginx、Apache等Web服务器中,很多人对“HTML服务器”存在误解,以为写个.html文件就能直接搭建一个像淘宝、抖音那样复杂的网站,HTML(超文本标记语言)只是一种描述网页结构的语言,就像……

    2026年6月2日
    3800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注