前言:

 前一篇了解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

部署新堆栈或更新现有堆栈

docker stack ls

显示

docker stack ps

列出堆栈中的任务

docker stack rm

移除一个或多个堆栈

docker stack services

列出堆栈中的服务

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/

Docker学习—Stack的更多相关文章

  1. 1.docker学习

    Docker —— 从入门到实践 http://udn.yyuap.com/doc/docker_practice/introduction/index.html 非常详细的Docker学习教程 ht ...

  2. Docker学习—Compose

    前言 前面<Docker学习-DockerFile>文中介绍了dockerfile相关的语法,及使用方式:接下来了解docker三剑客之一的 Compose:接下来详细学习. 一.dock ...

  3. Docker学习总结

    本文作为总结性文章,不会详细讲解Docker.但会把已学习的.了解的内容按照由易到难的顺序串起来,更多的是帮助Docker新手快速的了解Docker,知道目前处在哪个阶段,接下来该学些什么,避免碰太多 ...

  4. Docker学习笔记 — 配置国内免费registry mirror

    Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror

  5. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  6. docker学习资料整理(持续更新中..)

    docker最近可以说火得一踏糊涂,跟 51大神在交流技术的时候这个东西会多次被提到,当我们还玩vm+linux/freebsd的时候,人家已经上升到更高层次了,这就是差距,感觉好高大上的样子,技术之 ...

  7. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  8. Docker学习总结之Run命令介绍

    Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 在使用Docker时,执行最多的命令某 ...

  9. docker~学习笔记索引

    回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...

随机推荐

  1. 【Kata Daily 190903】String incrementer(字符串增量器)

    原题: Your job is to write a function which increments a string, to create a new string. If the string ...

  2. 【SpringBoot】12.全局配置文件(properties)与yml配置文件

    一.SpringBoot全局配置文件 1.修改内嵌容器端口号 #application.properties server.port=8888 2.自定义属性的配置 使用@Value来给成员变量赋值 ...

  3. Android Google官方文档解析之——System Permissions

    Android is a privilege-separated operating system, in which each application runs with a distinct sy ...

  4. Android Google官方文档解析之——Application Fundamentals

    Android apps are written in the java programming language.The Android SDK tools compile your code-al ...

  5. 5.1 ICommand

    1. CanExecute实现 只是将命令绑定到特定控件是不会触发CanExecute方法执行,该方法只是在实例化命令的时候才使用,其余如果需要触发该事件,只能通过后台代码组合触发,如更新一个后台类字 ...

  6. 用system v消息队列实现回射客户/服务器程序

    客户端程序 #include<unistd.h> #include<sys/types.h> #include<sys/socket.h> #include< ...

  7. 线程范围内的环境变量---ThreadLocal

    package cn.itcast.heima2; import java.util.HashMap; import java.util.Map; import java.util.Random; p ...

  8. Ceph对象主本损坏的修复方法

    前言 问题的触发是在进行一个目录的查询的时候,osd就会挂掉,开始以为是osd操作超时了,后来发现每次访问这个对象都有问题 log [WRN] : slow request 60.793196 sec ...

  9. git-新建git用户流程-1

    1.输入:https://git-scm.com/ 2.点击try git 4.注册git填写用户名和密码,邮箱,验证邮箱 5.选择免费的版本 6.创建仓库名称 创建成功见截图

  10. 这 5 个开源的能挣钱的 SpringBoot 项目,真TMD香!

    不得不佩服 Spring Boot 的生态如此强大,今天我给大家推荐几款 Gitee 上优秀的后台开源版本的管理系统,小伙伴们再也不用从头到尾撸一个项目了,简直就是接私活,挣钱的利器啊. SmartA ...