Docker Swarm部署微服务案例

1. 简介

Docker Swarm是Docker官方提供的用于管理和编排多个Docker容器的工具。它能够轻松地实现高可用性、负载均衡以及服务自动伸缩等功能。在本篇文章中,我们将介绍如何使用Docker Swarm来部署一个微服务案例。

2. 准备工作

在开始之前,我们需要确保已经安装了Docker和Docker Compose。可以通过以下命令来检查它们的版本:

docker --version
docker-compose --version

3. 创建Docker Swarm集群

首先,我们需要创建一个Docker Swarm集群,以便能够使用Swarm来管理和编排我们的微服务。下面是创建集群的步骤:

步骤 命令 说明
初始化Swarm docker swarm init 初始化一个新的Swarm集群
查看加入集群的命令 docker swarm join-token worker 获取加入集群的命令,用于其他节点加入集群
查看集群状态 docker node ls 查看集群节点的状态

将上述命令依次执行,并记录下加入集群的命令,以便后续节点加入使用。

4. 创建微服务应用

接下来,我们需要创建一个简单的微服务应用,用于演示Docker Swarm的部署和编排功能。假设我们的微服务应用由两个服务组成:一个用于处理用户注册的服务(user-service),另一个用于处理用户信息的服务(info-service)。

我们可以通过以下步骤来创建这两个服务:

  1. 创建一个名为docker-swarm-example的目录,并在该目录下创建以下两个文件:

    • docker-compose.yml:定义了微服务应用的配置信息。
    version: '3'
    services:
      user-service:
        image: user-service-image
        ports:
          - 8080:8080
        networks:
          - app-net
      info-service:
        image: info-service-image
        ports:
          - 8081:8080
        networks:
          - app-net
    networks:
      app-net:
    
    • Dockerfile:定义了每个服务的Docker镜像构建过程。
    FROM openjdk:8-jdk-alpine
    COPY ./target/user-service.jar /app/
    WORKDIR /app/
    CMD java -jar user-service.jar
    
  2. docker-swarm-example目录下执行以下命令,构建并启动微服务应用:

    docker-compose up -d --build
    
    • -d参数用于在后台运行容器。
    • --build参数用于重新构建镜像,以便应用最新的代码更改。
  3. 使用以下命令验证服务是否正常运行:

    docker ps
    

    应该能够看到两个运行中的容器,分别对应user-service和info-service。

5. 部署到Docker Swarm集群

现在我们已经创建了微服务应用并验证了其正常运行,接下来我们将部署应用到Docker Swarm集群中。假设我们有两台节点(Node1和Node2),我们将把应用部署到这两个节点上。

以下是部署到Docker Swarm集群的步骤:

步骤 命令 说明
加入集群 <join-command> 在Node2上执行该命令,将Node2加入到Swarm集群
部署服务 docker stack deploy -c docker-compose.yml <stack-name> 在Swarm集群中部署微服务应用
查看服务状态 docker service ls 查看已部署的服务状态
扩展服务 docker service scale <service-name>=<replica-count> 扩展服务的副本数量

将上述命令依次执行,并根据实际情况替换<join-command>和`<stack-name