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 |
部署新堆栈或更新现有堆栈 |
| 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.docker学习
Docker —— 从入门到实践 http://udn.yyuap.com/doc/docker_practice/introduction/index.html 非常详细的Docker学习教程 ht ...
- Docker学习—Compose
前言 前面<Docker学习-DockerFile>文中介绍了dockerfile相关的语法,及使用方式:接下来了解docker三剑客之一的 Compose:接下来详细学习. 一.dock ...
- Docker学习总结
本文作为总结性文章,不会详细讲解Docker.但会把已学习的.了解的内容按照由易到难的顺序串起来,更多的是帮助Docker新手快速的了解Docker,知道目前处在哪个阶段,接下来该学些什么,避免碰太多 ...
- Docker学习笔记 — 配置国内免费registry mirror
Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror
- docker学习笔记1 -- 安装和配置
技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...
- docker学习资料整理(持续更新中..)
docker最近可以说火得一踏糊涂,跟 51大神在交流技术的时候这个东西会多次被提到,当我们还玩vm+linux/freebsd的时候,人家已经上升到更高层次了,这就是差距,感觉好高大上的样子,技术之 ...
- Docker学习笔记之一,搭建一个JAVA Tomcat运行环境
Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...
- Docker学习总结之Run命令介绍
Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 在使用Docker时,执行最多的命令某 ...
- docker~学习笔记索引
回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...
随机推荐
- .NET 5.0正式发布,功能特性介绍(翻译)
本文由葡萄城技术团队翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 我们很高兴今天.NET5.0正式发布.这是一个重要的版本-其中也包括了C# ...
- HiveMQ TDengine extension 使用指南
我们简单介绍一下 HiveMQ extension for TDengine 的部署和使用方法. TDengine 和 HiveMQ 部署方法 TDengine 安装最新 TDengine serve ...
- linux 内核 tasklets 原理以及工作队列
如果某种应用并不需要在多个CPU上并行执行,那么软中断其实是没有必要的.因此诞生了弥补以上两个要求的tasklet.它具有以下特性: a)一种特定类型的tasklet只能运行在一个CPU上,不能并行, ...
- tar命令打包和压缩与解压
Linux里压缩与打包时分开的: 打包:多个文件变一个文件.该一个文件会大于整体所有文件,因为会添加各个信息说明哪到哪是一个文件. 压缩:大文件变小文件. 归档:将多个文件变成一个文件,这个文件就是归 ...
- Nacos 多环境配置
本文探讨Nacos作为配置中心,如何实现不同环境(开发.测试.灰度.正式)的配置管理问题 就像Maven用groupId.artifactId.version三者来定位jar包在仓库中的位置一样,Na ...
- Apache POI读写Excel
Apache POI是Apache软件基金会的开放源码函式库,POIAPI给Java程序对Microsoft Office格式档案读和写的功能. 官方文档 [https://poi.apache.or ...
- 入坑 docsify,一款神奇的文档生成利器!
layout: postcategory: javatitle: 入坑 docsify,一款神奇的文档生成利器!tagline: by 沉默王二tags: - java Guide 哥是我认识的一个非 ...
- Boost命令行解释器的简单使用:Boost.Program_options
简介 如果使用比较多的命令行程序的话,对于命令行参数的输入肯定不会陌生,大部分的程序都是通过类似下面的形式进行输入的,比如熟悉的ls ls --all -l --color=auto 这里面包含了三种 ...
- Android10_原理机制系列_Android消息机制(Handler)详述
概述 在Android中的多进程.多线程中提过,只有主线程(UI线程)可以更新UI,其他线程不可以,所以一般耗时操作放到子线程.子线程可以通过Handler将相关信息通知到主线程. Android的消 ...
- [PHP安全特性学习]is_numeric()函数安全漏洞
简介 PHP函数的安全特性-is_numerice() 函数 简介 PHP is_numeric() 函数 is_numeric() 函数用于检测变量是否为数字或数字字符串. 语法: bool is_ ...