Ubuntu Docker集群(Swarm模式)搭建步骤
1. 环境准备
- 硬件要求:至少2台Ubuntu服务器(推荐22.04/24.04 LTS版本,x86-64架构),每台建议配置≥2核CPU、2GB内存(生产环境需更高配置)。
- 网络要求:所有节点配置静态IP,确保节点间网络互通(可通过
ping命令测试);关闭防火墙或放行2377/tcp(Swarm管理端口)、7946/tcp/udp(节点通信端口)、4789/udp(覆盖网络端口)。 - 主机名配置:每台节点的
/etc/hostname需设置唯一名称(如manager-node、worker-node1),并通过/etc/hosts文件添加集群内主机名解析(如192.168.1.10 manager-node)。
2. 安装Docker Engine
在所有节点上执行以下命令安装最新版Docker:
# 更新软件包索引
sudo apt update
# 安装依赖包
sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加Docker软件源(替换为当前Ubuntu版本,如22.04)
echo "deb [arch=amd64 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/null
# 更新软件包索引并安装Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
# 启动Docker并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装(输出"Hello from Docker!"则成功)
sudo docker run hello-world
3. 初始化Docker Swarm集群
在**管理节点(manager-node)**上执行以下命令初始化Swarm:
# 初始化Swarm,指定管理节点IP(替换为实际静态IP)
sudo docker swarm init --advertise-addr 192.168.1.10
执行后会输出工作节点加入命令(含Token)和管理节点加入命令(用于扩展管理节点):
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 192.168.1.10:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
4. 加入工作节点到集群
在**工作节点(worker-node1、worker-node2等)**上,复制管理节点初始化输出的docker swarm join命令并执行:
# 示例(替换为实际Token和管理节点IP)
docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 192.168.1.10:2377
执行成功后,工作节点会自动连接到管理节点。
5. 验证集群状态
回到管理节点,执行以下命令查看集群节点列表:
sudo docker node ls
正常输出应包含1个管理节点(STATUS为Leader)和多个工作节点(STATUS为Ready),例如:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
xxxxxxxxxxxxxx... * manager-node Ready Active Leader 24.0.5
yyyyyyyyyyyyyy... worker-node1 Ready Active 24.0.5
zzzzzzzzzzzzzz... worker-node2 Ready Active 24.0.5
6. 部署服务到集群
使用docker service create命令在集群中部署服务(以Nginx为例,创建3个副本):
sudo docker service create --name my-nginx --replicas 3 -p 8080:80 nginx:latest
--name:服务名称(自定义);--replicas:副本数(指定服务运行的容器数量);-p 8080:80:将节点的8080端口映射到容器的80端口(外部访问需通过管理节点IP:8080)。
7. 查看服务状态
- 查看服务详情(包括副本分布、运行状态):
sudo docker service ps my-nginx - 查看服务日志:
sudo docker service logs -f my-nginx - 访问服务:在浏览器输入
http://<管理节点IP>:8080,若看到Nginx欢迎页面则说明服务部署成功。
8. 扩缩容服务
如需调整服务副本数(如将Nginx副本从3个扩展到5个),执行以下命令:
sudo docker service scale my-nginx=5
执行后,Swarm会自动调度新增的2个副本到集群中的工作节点。可通过docker service ps my-nginx查看副本分布。
9. (可选)添加更多管理节点
如需提升集群高可用性,可添加更多管理节点:
- 在管理节点上生成管理节点加入命令:
sudo docker swarm join-token manager - 在新管理节点上执行输出的
docker swarm join命令。
10. (可选)可视化集群(Portainer)
安装Portainer可视化工具,方便管理集群:
# 拉取Portainer镜像
sudo docker pull portainer/portainer-ce
# 创建Portainer数据卷(持久化数据)
sudo docker volume create portainer_data
# 启动Portainer容器(管理节点IP替换为实际IP)
sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
访问http://<管理节点IP>:9000,注册账号后即可通过Web界面管理集群。
以上就是关于“ubuntu docker集群搭建步骤”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm