Docker Swarm集群实践——部署篇

本文介绍了Docker Swarm在1.12版中的整合,强调了其作为Docker Engine附加功能的优势。详细阐述了Docker Swarm的管理工具角色,以及如何通过修改Docker配置、申请token、启动Swarm Manager等步骤,部署Swarm集群。在实践中遇到的ID重复问题以及解决方案,并展示了在Swarm集群中使用SuperMap iCloudManager的初步操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最新消息

Docker在上周的DockerCon技术大会上发布了1.12版核心产品Docker Engine,最大的新特性是Docker Swarm已经被整合到了Docker Engine里面而不再是一个单独的工具了,这样就可以更容易的把多个Docker主机组合成一整个规模更大可靠性更高的逻辑单元。Docker的掌舵者 Adrian Mouat相信这种新的集群模式可以大大增强Docker在相关领域的竞争力。

把Docker Swarm整合进Docker Engine是一个重大改进,但它也只是一个附加功能,你可以只在需要的时候才使用它。你可以用和以前一样的方式来安装、运行和升级Docker 1.12,而且它也对已有的容器镜像和工具向后兼容。



以上是关于Swarm的最新发展,你可以深切的感受到开源力量对一个技术的快速迭代,相比较一个公司使用激励机制提高员工的积极性,开源的思想让那些有共同理想的技术天才共同协作,为科技的发展提供动力。一点感慨而已!

当然,我们先了解一下现在Swarm的状况,对学习未来的Swarm还是很有帮助的。


Swarm 简介

Swarm是Docker公司在2014年12月初新发布的容器管理工具。和Swarm一起发布的Docker管理工具还有Machine以及Compose。Swarm是一套较为简单的工具,用以管理Docker集群,使得Docker集群暴露给用户时相当于一个虚拟的整体。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client均可以直接与Swarm通信



Swarm架构
Swarm作为一个管理Docker集群的工具,首先需要将其部署起来,可以单独将Swarm部署于一个节点。另外,自然需要一个Docker集群,集群上每一个节点均安装有Docker。具体的Swarm架构图可以参照下图:


Swarm架构中最主要的处理部分自然是Swarm节点,Swarm管理的对象自然是Docker Cluster,Docker Cluster由多个Docker Node组成,而负责给Swarm发送请求的是Docker Client。


Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,当Swarm重新恢复运行之后,它会收集重建集群信息。


Swarm集群部署

部署架构如下


我们有三台服务器,132机器作为Swarm Server服务器,其他服务器作为Docker集群的子节点。

1、132机器上下载Swarm镜像

docker pull swarm

2、在使用Swarm进行集群管理之前,需要先把准备加入集群的所有的节点的docker deamon的监听端口修改为0.0.0.0:2375,修改所有参与Swarm集群的服务器的/etc/default/docker,映射容器端口号.

DOCKER_OPTS="-H 0.0.0.0:2375 -H unix:///var/run/docker.sock"
重启docker 服务


3、在132机器上申请Swarm的token

root@controller:~# docker run --rm swarm create
88b70a0603a97f3e51be1d83f471a1df
该token是其他机器加入集群的凭证,需要记录。


<
### Docker Swarm 集群部署前后端不分离项目的最佳实践与配置方法 在 Docker Swarm部署前后端不分离的项目涉及多个方面,包括容器化应用、定义服务之间的依赖关系以及设置网络通信机制。以下是详细的说明: #### 1. 容器化应用程序 为了使前端和后端能够在同一集群中运行并协同工作,需要分别构建它们的镜像文件 `Dockerfile`。 对于 **后端** 应用程序(假设是一个基于 Python 的 Flask API),可以创建如下结构的 `Dockerfile` 文件[^1]: ```dockerfile FROM python:3.9-slim-buster WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "app.py"] ``` 而对于 **前端** 应用程序(例如 React 或 Vue.js 构建的应用),则可能有类似的 `Dockerfile` 结构[^2]: ```dockerfile FROM node:16-alpine AS build-stage WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build FROM nginx:stable-alpine COPY --from=build-stage /app/dist/ /usr/share/nginx/html/ EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` #### 2. 使用 Compose 文件定义服务 通过编写 `docker-compose.yml` 文件来描述整个系统的架构和服务间的交互方式。下面展示了一个简单的例子,其中包含一个 Nginx 前端服务器和一个后端 RESTful API: ```yaml version: '3.8' services: frontend: image: my-frontend-image:v1 ports: - "80:80" networks: - app-network backend: image: my-backend-api:v1 environment: DATABASE_URL: postgres://db_user:password@database/db_name depends_on: - database networks: - app-network database: image: postgres:latest volumes: - db_data:/var/lib/postgresql/data environment: POSTGRES_USER: db_user POSTGRES_PASSWORD: password POSTGRES_DB: db_name networks: - app-network volumes: db_data: networks: app-network: driver: overlay ``` 此配置文件设置了三个主要组件——前端 Web UI (`frontend`)、后端业务逻辑处理单元(`backend`) 和数据库存储层(`database`) 并且所有的这些都连接到同一个自定义 Overlay Network 上以便于跨主机通讯. #### 3. 初始化 Swarm 模式 & 创建堆栈(Stack) 一旦完成了上述准备工作之后就可以初始化 swarm mode 来管理多台机器上的资源调度情况了;接着利用命令行工具把 compose file 转换成实际运行中的 service 实体对象 : ```bash # 启动swarm模式 docker swarm init # 将compose yaml转化为stack形式发布出去 docker stack deploy -c docker-compose.yml my-app-stack ``` 这样做的好处在于它简化了大规模分布式环境下的运维操作流程的同时还提供了高可用性和弹性伸缩能力等功能特性支持. --- ###
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值