• Docker学习—Stack


    前言:

     前一篇了解Docker使用Swarm集群部署方式,并创建服务到Swarm集群中;如果在集群部署过程中存在大量服务部署、编排那么该如何处理呢?

     那么就需要了解Docker Stack了。

    1、Docker Stack是什么?

     Docker在进行多服务部署和管理时通常会使用Docker Stack来解决大规模部署管理问题,Docker引擎在1.12 版本集成了Docker Swarm, 内置新的容器编排工具docker stack,通过提供期望状态、滚动升级、简单易用、扩缩容、健康检查等特性简化了应用的管理。

     从体系结构上来讲,Stack 位于 Docker 应用层级的最顶端。Stack 基于服务进行构建,而服务又基于容器,如下图所示。

     

    2、Docker Stack相关命令

     命令比较简单且重点命令已经标记

    命令 描述
    docker stack deploy

    部署新stack或更新现有stack

    docker stack ls

    显示stack列表

    docker stack ps

    列出stack中的任务

    docker stack rm

    移除一个或多个stack

    docker stack services

    列出stack中的服务 

    3、Docker Stack应用示例

     1、将本地创建镜像推送到dockerhub:

       注意:在推送本地编译镜像时提示:denied: requested access to the resource is denied

      解决办法:为镜像打标 docker tag 镜像名 dockerhub用户名/镜像名

    docker tag czidentityserver cwsheng/czidentityserver

      2、添加一个docker-compose.yml文件

    version: "3.8"
    
    services:
      czids:
        image: cwsheng/czidentityserver
        ports: 
          - "8090:8090"
        networks: 
          - backend
    
      visualizer:
        image: dockersamples/visualizer:stable
        ports:
          - "8080:8080"
        stop_grace_period: 1m30s
        volumes:
          - "/var/run/docker.sock:/var/run/docker.sock"
        deploy:
          placement:
            constraints:
              - "node.role==manager"
    
    networks:
      backend:

      3、执行命令  

    docker stack deploy -c docker-compose.yml stackdemo

     4、查看服务  

    docker service ps mygoweb

     5、可以看出docker stack和docker compose使用非常类似:

      都是使用yml定义容器编排,且都能操作yml文件中定义的:services、volumes、networks等资源

    docker-compose -f docker-compose up
    
    docker stack deploy -c docker-compose.yml stackdemo

      那么他们有什么不同呢

    Docker Stack与Docker Compose的区别

    1、来源:docker-compose是一个Python项目,作用在Docker引擎的顶层,必须单独安装docker-compose工具包才能将其与Docker一起使用;docker stack 来源docker 引擎原生支持,不许要额外安装

    2、compose-file版本支持docker stack 只能支持 version3 以上版本;docker compose支持所有版本

    3、docker stack 不支持 compose file中的“build”指令,docker compose 不支持 deploy(https://docs.docker.com/compose/compose-file/#deploy)

    4、docker stack 是swarm mode的一部分, 即使是单机使用, 也需要一个 swarm 节点

    5、docker stack 强化了service的概念:服务可理解为发布到生产环境时某组容器的预期状态 ,以及强化了( 复制集、 容器重启策略、回滚策略、服务更新策略 )等生产特性

    总结 

      1、docker-compose 更像是被定义为单机容器编排工具

      2、docker stack为适用于生产环境的编排工具

     docker-compose、docker stack工具命令都可以使用version3 编写的docker-compose.yml 文件上,版本3之前的docker-compose.yml 文件可继续使用docker-compose工具,如果你仅需要一个能操作多个容器的工具,依旧可以使用docker-compose工具。

     docker stack几乎能做docker-compose所有的事情 (生产部署docker stack表现还更好),如果打算使用docker swarm集群编排,可迁移到docker stack。

    参考:

      https://docs.docker.com/compose/compose-file/ 

  • 相关阅读:
    CLOUD COMPUTING MADE EASY by Cary Landis and Dan Blacharski
    浅析JSONP
    Xpages 执行的生命周期
    LotusScript类的继承
    苹果公司的UI交互设计师Bret Victor演讲 Inventing on Principle
    ajax
    Aptana 汉化方法
    删除数据库连接脚本
    让Visual Studio 也支持JS代码折叠 [ Visual Studio | #region | #endregion ]
    power designer简单教程
  • 原文地址:https://www.cnblogs.com/cwsheng/p/14058171.html
Copyright © 2020-2023  润新知