跳至主要內容

Docker 进阶 - Docker Swarm (官方容器编排)

bsfc.tech2024年5月10日大约 4 分钟DockerDocker Swarm

Docker Swarm 是 Docker 官方提供的容器编排工具,它允许用户轻松地管理和扩展容器化应用到多台主机上。Docker Swarm 将一组 Docker 引擎组成的集群作为一个单一的虚拟系统来管理,实现了服务的自动化部署和管理,以及容器的负载均衡。以下是 Docker Swarm 的一些进阶概念和特性:

Docker Swarm 模式

示例:部署服务到 Docker Swarm

假设你已经有了一个 Swarm 集群,下面是如何使用 Docker Compose YAML 文件部署一个简单的 Web 服务栈的步骤:

  1. 创建 Docker Compose 文件(例如 my-webapp.yml):

    version: '3'
    services:
      web:
        image: nginx:latest
        ports:
          - "80:80"
        networks:
          - webnet
    networks:
      webnet:
    
  2. 初始化 Swarm 或连接到现有的 Swarm(如果尚未进行):

    # 初始化 Swarm(在管理节点上执行)
    docker swarm init
    
    # 如果要加入现有的 Swarm,使用提供的 join-token 和 manager/worker 地址
    docker swarm join --token SWMTKN... <manager-ip>:<manager-port>
    
  3. 部署服务栈

    docker stack deploy -c my-webapp.yml myweb
    

以上命令会基于 my-webapp.yml 文件中的定义,在 Swarm 集群上部署名为 myweb 的服务栈,包含一个使用 Nginx 镜像的 Web 服务,并通过内置的网络和负载均衡功能使其可访问。

Docker Swarm 提供了一种相对轻量级且易于使用的容器编排解决方案,特别适合那些寻求快速部署和管理微服务架构的团队。然而,对于需要更高级特性和扩展性的场景,可能需要考虑如 Kubernetes 这类更为强大的编排平台。

一些常用的 Docker Swarm 相关命令及其简要说明:

  1. 初始化 Swarm 集群

    • docker swarm init [--advertise-addr IP:PORT] 初始化一个新的 Swarm 集群,并将当前节点设置为第一个管理节点。--advertise-addr 参数用于指定其他节点连接到此管理节点的地址和端口。
  2. 加入 Swarm 集群

    • docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT> 使用从管理节点获得的加入令牌(TOKEN)将节点加入到 Swarm 集群中。<MANAGER-IP>:<PORT> 是管理节点的地址和端口。
  3. 离开 Swarm 集群

    • docker swarm leave [--force] 使当前节点离开 Swarm 集群。如果当前节点是管理节点,使用 --force 强制离开,这会导致集群失去一个管理节点。
  4. 查看加入令牌

    • docker swarm join-token [role] 显示用于加入集群的令牌,role 可以是 workermanager
  5. 更新 Swarm 集群配置

    • docker swarm update 更新 Swarm 集群的配置,例如更改副本数量或更新策略。
  6. 管理节点

    • docker node ls 列出 Swarm 集群中的所有节点。
    • docker node rm <NODE-ID> 从集群中移除一个节点。
    • docker node promote <NODE-ID> 将工作节点提升为管理节点。
    • docker node demote <NODE-ID> 将管理节点降级为工作节点。
  7. 服务管理

    • docker service create 创建一个新的服务。
    • docker service ls 列出所有服务。
    • docker service inspect <SERVICE-ID> 查看服务的详细信息。
    • docker service scale <SERVICE-ID>=<REPLICAS> 设置服务的副本数量。
    • docker service update <SERVICE-ID> 更新服务的配置。
  8. 栈(Stacks)管理

    • docker stack deploy -c <COMPOSE-FILE> <STACK-NAME> 使用 Docker Compose 文件部署一个栈。
    • docker stack ls 列出所有栈。
    • docker stack rm <STACK-NAME> 移除一个栈。
  9. 秘密管理

    • docker secret ls 列出所有的秘密。
    • docker secret create <SECRET-NAME> <FILE> 创建一个新的秘密。
    • docker secret inspect <SECRET-NAME> 查看秘密的详细信息。
    • docker secret rm <SECRET-NAME> 移除一个秘密。

这些命令提供了管理和操作 Swarm 集群的基础功能。在实际操作中,你可能需要结合具体的参数和选项来满足特定的需求。


以上是本篇文章的全部内容,如对你有帮助帮忙点赞 + 转发 + 收藏。