在当今云原生时代,Ubuntu集群与容器编排已成为构建弹性、可扩展应用的基石。本文将手把手教你如何在 Ubuntu 系统上搭建一个基于 Docker Swarm 的轻量级容器编排环境,适合初学者快速入门。
什么是容器编排?
容器编排是指自动化部署、管理、扩展和网络配置多个容器的过程。常见的工具包括 Docker Swarm 和 Kubernetes。本文以更轻量、易上手的 Docker Swarm 为例,帮助你快速掌握 Ubuntu集群上的容器编排基础。
准备工作
你需要至少两台运行 Ubuntu 20.04 或更高版本的服务器(物理机或虚拟机均可),并确保以下条件:
所有节点能互相通过 SSH 访问 已安装 Docker(版本 ≥ 20.10) 关闭防火墙或开放必要端口(如 2377、7946、4789)步骤一:在所有节点安装 Docker
在每台 Ubuntu 服务器上执行以下命令安装 Docker:
选择一台机器作为管理节点(Manager),执行以下命令: 成功后,你会看到类似如下的输出: 在其他 Ubuntu 节点上,复制上一步中生成的 返回管理节点,验证集群状态: 你应该能看到所有节点(包括 Manager 和 Workers)都在线。 现在我们用 容器编排部署一个 Nginx 服务: 该命令会创建一个名为 查看服务状态: 当你熟悉了 Docker Swarm 后,可以考虑迁移到功能更强大的 Kubernetes。Kubernetes 在大规模生产环境中更为常见,但学习曲线较陡。对于中小型项目或学习目的,Docker Swarm 已足够强大且易于维护。 通过本教程,你已经掌握了在 Ubuntu集群上使用 Docker Swarm 进行容器编排的基础技能。无论你是 DevOps 新手还是开发者,这都是迈向云原生应用开发的重要一步。后续可探索服务滚动更新、健康检查、Overlay 网络等高级特性。 关键词回顾:Ubuntu集群、容器编排、Docker Swarm、Kubernetes。sudo apt updatesudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-releasecurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt updatesudo apt install -y docker-ce docker-ce-cli containerd.io# 将当前用户加入 docker 组,避免每次使用 sudosudo usermod -aG docker $USERnewgrp docker # 刷新组权限(或重新登录) 步骤二:初始化 Docker Swarm 集群
# 替换 YOUR_MANAGER_IP 为该机器的内网 IPsudo docker swarm init --advertise-addr YOUR_MANAGER_IP Swarm initialized: current node (xxxxxx) is now a manager.To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-xxxxxxxxxx YOUR_MANAGER_IP:2377 步骤三:添加工作节点(Worker)
docker swarm join
命令并执行:docker swarm join --token SWMTKN-1-xxxxxxxxxx YOUR_MANAGER_IP:2377 docker node ls 步骤四:部署一个测试服务
docker service create \ --name my-web \ --publish published=80,target=80 \ --replicas 3 \ nginx:latest my-web
的服务,启动 3 个副本,并将主机的 80 端口映射到容器的 80 端口。docker service lsdocker service ps my-web 进阶建议
总结
