stack介绍

stack是一组共享依赖,可以被编排并具备扩展能力的关联service。举例来说就是在swarm那章描述docker层次架构时,说stack就是一个完整的服务--它可以由基于flask框架的web service和redis数据库service构成。

这个stack中的service的web部分由多个container组成,它们共享依赖

这个stack还可以加入其它service--比如nginx,所以stack具备被编排的能力。

当需要更大的处理需求时,在数据库能承受的情况下,可以扩展swarm的机器数量,重新部署这个stack就能获得更大的处理能力,stack就具备扩展能力

给stack添加新service

整个stack只有一个名为web的service,现在添加docker可视化监控软件和redis数据库。

docker-compose.yml

version: "3"
services:
web:
image: cchenyang/get-started:part2
deploy:
replicas: 3
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
# immediately restart containers if one fails
condition: on-failure
# map port 8001 on the host to web's port 8001
ports:
- "8001:8001"
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
redis:
image: redis
ports:
- "6379:6379"
volumes:
- "/home/docker/data:/data"
deploy:
placement:
constraints: [node.role == manager]
command: redis-server --appendonly yes
networks:
- webnet
networks:
webnet:

这里新添加了两个service--visualizer和redis。

配置项解析

volumes是将docker外界的文件映射到docker中。"/var/run/docker.sock:/var/run/docker.sock"就是将机器自身的docker.sock文件映射放到visualizer整个service的container的指定目录下。docker container只能通过这种映射的方式读写container外的文件。redis这个service中的volumes也是同理,这个redis配置的持久化文件保存目录是/data,通过映射,将/data文件映射到外部机器的/home/docker/data文件夹下,实现持久化存储。

placement下的constraints限制visualizer和redis只能在manager下运行。

注意这里的command,web和visualizer这两个服务,开启container就会运行。通过docker container ls就可以发现,web的container的command是python app.py,visulizer的command是npm start,唯独redis不是什么启动命令,而是执行的sh文件。通过https://docs.docker.com/samples/找到它的构建命令,发现只是在做设置,冰没有启动redis。所以在部署的时候,需要再添加启动的command。数据库的确应该在配置好外部文件映射后才启动。

重新部署stack

docker stack deploy -c docker-compose.yml getstartedlab重新执行一遍。

系列导航

docker入门1-docker container

docker入门2-docker service

docker入门3-docker swarm

docker入门4-docker stack的更多相关文章

  1. Docker入门 - 006 Docker 多种数据库的安装

    Docker 安装 MySQL 查找Docker Hub上的mysql镜像 root@VM_16_14_centos ~# docker search mysql INDEX NAME DESCRIP ...

  2. Docker入门 - 004 Docker 容器使用

    Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. docker 可以通过命令 docker command -- ...

  3. Docker入门 - 003 Docker 实例

    Docker Hello World Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序. 输出Hello world runoob@runoob: ...

  4. Docker入门之一Docker在Window下安装

    最近这几年,各个大公司都在打造自己的云平台,什么阿里云,华为云,腾讯云等等云,以及各种的微服务架构,其实在这当中Docker容器技术算是一个很重要的角色. 一.下载 在下载之前首先检查一下自己的电脑是 ...

  5. Docker入门-搭建docker私有仓库

    Docker Hub 目前Docker官方维护了一个公共仓库Docker Hub,其中已经包括了数量超过15000个镜像.大部分需求都可以通过在Docker Hub中直接下载镜像来使用. 注册登录 可 ...

  6. Docker入门——理解Docker的核心概念

    1 前言 相信不少人听过这么一句话: 人类的本质是复读机. 在软件开发领域也一样,我们总是想寻找更好地方式复制优秀的逻辑或系统.最核心的方法是抽取通用逻辑和组件,把差异化的东西接口化或配置化,达到复用 ...

  7. 【Docker入门】Docker的常用命令

    ​ ​ 了解和安装完docker之后,我们学习一下docker的常用命令就和当初学linux命令一样,放心命令其实大致相同只不过细节不同. 一.Docker启动类命令 1.启动docker:syste ...

  8. Docker入门 - 005 Docker 容器连接

    Docker 容器连接 前面我们实现了通过网络端口来访问运行在docker容器内的服务.下面我们来实现通过端口连接到一个docker容器 网络端口映射 我们创建了一个 python 应用的容器. do ...

  9. Docker入门 - 002 Docker 的简单操作

    系统要求:CentOS 7.2 64 位操作系统. Docker 的简单操作 下载镜像 下载一个官方的 CentOS 镜像到本地 docker pull centos 下载好的镜像就会出现在镜像列表里 ...

  10. Docker 入门之docker容器创建

    使用docker容器的大多数人都是因为想要隔离不同运行环境的差异,使得自己的应用能更好的移植和部署.那么我们来看看掌握docker需要掌握哪些方面. 1,搭建docker环境 2,编译镜像并将其运行成 ...

随机推荐

  1. 轻量级分布式延时任务处理组件easyTask-L-入门篇

    今天给大家介绍一款新武器.我自研的一个java组件easyTask-L.这个是做啥的呢?我之前研发了一款单机版本的easyTask,这次是要介绍另外一款easyTask-L.区别就是后者支持分布式环境 ...

  2. vue 修改路由

    直接放代码: this.$router.push({ path: "/login" });

  3. xctf-pwn hello_pwn

    走流程,看看文件类型 64位,开了NX 直接丢IDA分析 查看sub_400686() 是个给flag的函数,可以看到,只要满足if语句的条件使dword_60106C == 1853186401就可 ...

  4. c++输出左右对齐设置

    #include<iostream> int main(){ using std::cout; cout.setf(std::ios::left); int w = cout.width( ...

  5. 线程_Process基础语法

    """ Process([group[,target[,name[,args[,kwargs]]]]]) group:大多数情况下用不到 target:表示这个进程实例所 ...

  6. centos7安装单机环境redis3.2

    本次安装的系统版本如下: [root@zhangqinglei ~]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core) [roo ...

  7. PHP 基础语法介绍

    PHP 语法 PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器. 基本的 PHP 语法 PHP 脚本可以放在文档中的任何位置. PHP 脚本以 <?php 开始,以 ?>  ...

  8. PHP strncasecmp() 函数

    实例 比较两个字符串(不区分大小写): <?php高佣联盟 www.cgewang.comecho strncasecmp("Hello world!","hell ...

  9. php操作mysql关于文件上传、存储

    php+前端+mysql实现文件上传并储存 我们都知道很多网站都需要上传文件,最普遍的就是图片上传,即是用户头像等等: 关于mysql+php实现文件查询,存储大致两个方式, 1.直接把文件写入mys ...

  10. MySQL中EXPLAIN命令详细解析

    很多情况下我们需要知道某条SQL语句的性能,都会通过EXPLAIN命令来查看查询优化器是如何执行的. 如何使用 使用EXPLAIN很简单,只需要在执行的SQL前面加上EXPLAIN即可 explain ...