Docker 入门之创建service(一)
在一个分布式应用中,我们把应用的不同层叫做“Services”。比如,一个视频共享应用,它包含存储数据到数据库的服务,用户上载后后台进行的视频解码服务,前端服务等等。
然而,一个服务只能在一个镜像中运行,这使得一个分布式应用可能会产生冲突,比如,端口冲突,容器复用等等。所以,docker-compose.yml文件应运而生。
一 、运行docker-compose.yml文件来创新一个service
前提
1,将本地要运行的某个容器镜像上传至自己的的docker仓库
如,我想要运行一个web服务,首先生成自己的web容器,该容器生成方法参照我的上一篇文章,然后给friendlyhello镜像打个标签
(标签名字得跟仓库中的用户名和路径一致,一般格式”usrname/path:tag”)如图

即上述操作完成了镜像上传。
2,接下来就是利用docker-compose文件创建一个web服务

将上述文件保存为docker-compose.yml,即在当前目录下含有

然后在当前目录下运行docker swarm init 将该机器配置成服务的管理者,
再运行docker stack deploy -c docker-compose.yml getstartedlab(其中getstartedlab是你给你的app服务取的名字,运行成功后,通过docker service ls 命令查看服务是否建立起来,然后打开浏览器连接到localhost查看我们的app服务的输出,或者运行curl -4 http://localhost 查看输出。
至此一个app服务已经建立好了。
3,扩展app服务
你可以反复修改你的docker-compose.yml文件,并运行命令docker stack deploy -c docker-compose.yml getstartedlab来扩展你的app服务。
4,卸载app服务和swarm
docker stack rm getstartedlab
docker swarm leave --force
二、理解Swarm集群
一个swarm是一组运行docker的机器并加入到集群中。在集群中,swarm管理者来执行机器中的命令,这些机器可以是物理的或者虚拟的,也被称作节点。
三、Swarm管理者的运行容器的调度策略
1,最大限度的利用每个机器
即每个机器极可能运行足够多的容器,当当前机器不足以满足调度队列中下一个容器所需资源时才更换另一个机器。
2,每个机器至少运行一个特定容器
即查询调度队列中容器数量,尽可能保证每个机器上都至少运行一个特定容器。
一个swarm集群有一个管理者和多个工作者,其中管理者能够认证其他机器来参与集群中的工作,工作者只提供工作能力而不具备认证其他机器的权限。
具体实现思路请参照我的下一篇文章,欢迎读者留下爪印共同探讨。本文参考了docker官网文件https://docs.docker.com/。
Docker 入门之创建service(一)的更多相关文章
- docker入门2-docker service
docker service介绍 service是生产环境中某个image的container集合.一个service只使用一个image,但它编排这个image的运行方式,比如使用哪个端口,根据需求 ...
- Docker 入门之docker容器创建
使用docker容器的大多数人都是因为想要隔离不同运行环境的差异,使得自己的应用能更好的移植和部署.那么我们来看看掌握docker需要掌握哪些方面. 1,搭建docker环境 2,编译镜像并将其运行成 ...
- Docker入门教程(四)Docker Registry
Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...
- Docker 入门实践
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张戈 导语 本文从新手视角记录了一个实际的Dokcer应用场景从创建.上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法 ...
- Docker(一):Docker入门教程
如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如 ...
- 实用的Docker入门
1 Docker概述 Docker和虚拟机一样,都拥有环境隔离的能力,但它比虚拟机更加轻量级,可以使资源更大化地得到应用.首先来看Docker的架构图: 理解其中几个概念: Client(Docker ...
- Docker入门学习
Python爬虫 最近断断续续的写了几篇Python的学习心得,由于有开发经验的同学来说上手还是比较容易,而且Python提供了强大的第三方库,做一个小的示例程序还是比较简单,这不我之前就是针对Pyt ...
- Docker入门笔记
Docker入门笔记 随笔记录初学Docker遇到的问题, 以免下次再犯. 本机系统Ubuntu18.04 安装 Docker有2个版本 Community Edition (CE) 社区版(免费) ...
- 这可能是最为详细的Docker入门吐血总结
这可能是最为详细的Docker入门吐血总结 https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html Docker是什么? 在计算机技术日新 ...
随机推荐
- oracle04_plsql
PLSQL:Procedural Language SQL (1) plsql的基本结构(a) declare id constant number(2):=2;--常量定义 name varchar ...
- mybatis-自定义缓存-redis二级缓存
在mybatis一级缓存二级缓存中已经介绍过了二级缓存的大致原理.下面我们用redis来实现一下二级缓存.环境是springmvc+mybatis+redis 步骤一.引入redis相关的maven依 ...
- myeclipse取消js校验
最近玩一个新的项目,项目里面集成了别的项目,在从SVN上第一次荡下来的时候编译的时候老是校验jq文件,老是被卡主,设置myeclipse环境的时候我已经取消了所有的js校验了,但是还是不行.恼火之余, ...
- JDK自带的Timer类
Timer类负责设定TimerTask的起始和间隔执行时间.具体的执行任务,由用户创建一个TimerTask的继承类,并实现其run()方法 timer.schedule()
- awk 的 pattern(模式)
我们知道, awk程序由一系列 pattern 以及与之对应的 action 组成的 rule 组成,rule之间用";"分号隔开, 一条输入记录与 pattern 匹配则执行与之 ...
- #pragma once 与 #ifndef 解析
转自:http://www.cnblogs.com/hokyhu/archive/2009/03/30/1425604.html 为了避免同一个文件被include多次,C/C++中有两种方式,一种是 ...
- wpf阻止键盘快捷键alt+space,alt+F4
/// <summary> /// 阻止 alt+f4和alt+space 按键 /// </summary> /// <par ...
- HttpURLConnection用法
在SDK中的URLConnection链接Servlet的问题 1.URL的请求分类GET和POST GET请求可以获取页面静态的值,参数放URL后,传给Serverlct POST的参数是存放于ht ...
- 夏令营讲课内容整理 Day 6 Part 3.
第三部分主要讲的是倍增思想及其应用. 在Day3的整理中,我简要提到了倍增思想,我们来回顾一下. 倍增是根据已经得到的信息,将考虑的范围扩大一倍,从而加速操作的一种思想,它在变化规则相同的情况下,加速 ...
- javascript 利用FileReader和滤镜上传图片预览
FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File或 Blob对象指定要读取的文件或数据. 1.FileReader接口的方法 Fi ...