docker入门4-docker stack
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的更多相关文章
- Docker入门 - 006 Docker 多种数据库的安装
Docker 安装 MySQL 查找Docker Hub上的mysql镜像 root@VM_16_14_centos ~# docker search mysql INDEX NAME DESCRIP ...
- Docker入门 - 004 Docker 容器使用
Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. docker 可以通过命令 docker command -- ...
- Docker入门 - 003 Docker 实例
Docker Hello World Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序. 输出Hello world runoob@runoob: ...
- Docker入门之一Docker在Window下安装
最近这几年,各个大公司都在打造自己的云平台,什么阿里云,华为云,腾讯云等等云,以及各种的微服务架构,其实在这当中Docker容器技术算是一个很重要的角色. 一.下载 在下载之前首先检查一下自己的电脑是 ...
- Docker入门-搭建docker私有仓库
Docker Hub 目前Docker官方维护了一个公共仓库Docker Hub,其中已经包括了数量超过15000个镜像.大部分需求都可以通过在Docker Hub中直接下载镜像来使用. 注册登录 可 ...
- Docker入门——理解Docker的核心概念
1 前言 相信不少人听过这么一句话: 人类的本质是复读机. 在软件开发领域也一样,我们总是想寻找更好地方式复制优秀的逻辑或系统.最核心的方法是抽取通用逻辑和组件,把差异化的东西接口化或配置化,达到复用 ...
- 【Docker入门】Docker的常用命令
了解和安装完docker之后,我们学习一下docker的常用命令就和当初学linux命令一样,放心命令其实大致相同只不过细节不同. 一.Docker启动类命令 1.启动docker:syste ...
- Docker入门 - 005 Docker 容器连接
Docker 容器连接 前面我们实现了通过网络端口来访问运行在docker容器内的服务.下面我们来实现通过端口连接到一个docker容器 网络端口映射 我们创建了一个 python 应用的容器. do ...
- Docker入门 - 002 Docker 的简单操作
系统要求:CentOS 7.2 64 位操作系统. Docker 的简单操作 下载镜像 下载一个官方的 CentOS 镜像到本地 docker pull centos 下载好的镜像就会出现在镜像列表里 ...
- Docker 入门之docker容器创建
使用docker容器的大多数人都是因为想要隔离不同运行环境的差异,使得自己的应用能更好的移植和部署.那么我们来看看掌握docker需要掌握哪些方面. 1,搭建docker环境 2,编译镜像并将其运行成 ...
随机推荐
- js用正则表达式查找中文
var content = "awfjawf测试wfewef"; var ret = /\p{Unified_Ideograph}+/u.exec(content);
- APP自动化 -- 获取toast元素的文本内容
一.toast元素 1.表现形式:toast元素就是下图中 “操作成功” 那个一闪而过的标签. 2.特殊点:因为一闪而过,时间太短,用UIAutomatorView截屏截不到. 二.获取方法 1.用 ...
- 深度学习中损失值(loss值)为nan(以tensorflow为例)
我做的是一个识别验证码的深度学习模型,识别的图片如下 验证码图片识别4个数字,数字间是有顺序的,设立标签时设计了四个onehot向量链接起来,成了一个长度为40的向量,然后模型的输入也是40维向量用s ...
- Java Web(5)-Servlet详解(上)
一.Servlet 1. 什么是Servlet Servlet 是 JavaEE 规范之一,规范就是接口 Servlet 就 JavaWeb 三大组件之一,三大组件分别是:Servlet 程序.Fil ...
- 对于Javaweb初学者的一些坑。#Javaweb
1.在配置好Tomcat之后 ,编译阶段发现报错 这种对于我个人来说一般有两种情况: ①在编写代码时(比如servlet)发现爆红,一般是maven的依赖没有导入,这个时候在xml文件中导入需要的包的 ...
- zookeeper 源码编译
环境:mac 1.github上下载 源码 项目地址:https://github.com/apache/zookeeper 2.安装 ant mac:brew update -> brew ...
- Python os.fstatvfs() 方法
概述 os.fstatvfs() 方法用于返回包含文件描述符fd的文件的文件系统的信息,类似 statvfs().高佣联盟 www.cgewang.com Unix上可用. fstatvfs 方法返回 ...
- day21:正则函数&模块和包(import)
正则函数 1.search 通过正则匹配出第一个对象返回,通过group取出对象中的值 # search 通过正则匹配出第一个对象返回,通过group取出对象中的值 strvar = "1 ...
- docker 常用命令备忘录
基础命令 docker version docker info docker --help 镜像命令 查看 docker images 其中: REPOSITORY:表示镜像的仓库源 TAG: ...
- 畅购商城(四):Lua、OpenResty、Canal实现广告缓存与同步
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 畅购商城(一):环境搭建 畅购商 ...