在一个分布式应用中,我们把应用的不同层叫做“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(一)的更多相关文章

  1. docker入门2-docker service

    docker service介绍 service是生产环境中某个image的container集合.一个service只使用一个image,但它编排这个image的运行方式,比如使用哪个端口,根据需求 ...

  2. Docker 入门之docker容器创建

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

  3. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

  4. Docker 入门实践

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张戈 导语 本文从新手视角记录了一个实际的Dokcer应用场景从创建.上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法 ...

  5. Docker(一):Docker入门教程

    如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如 ...

  6. 实用的Docker入门

    1 Docker概述 Docker和虚拟机一样,都拥有环境隔离的能力,但它比虚拟机更加轻量级,可以使资源更大化地得到应用.首先来看Docker的架构图: 理解其中几个概念: Client(Docker ...

  7. Docker入门学习

    Python爬虫 最近断断续续的写了几篇Python的学习心得,由于有开发经验的同学来说上手还是比较容易,而且Python提供了强大的第三方库,做一个小的示例程序还是比较简单,这不我之前就是针对Pyt ...

  8. Docker入门笔记

    Docker入门笔记 随笔记录初学Docker遇到的问题, 以免下次再犯. 本机系统Ubuntu18.04 安装 Docker有2个版本 Community Edition (CE) 社区版(免费) ...

  9. 这可能是最为详细的Docker入门吐血总结

    这可能是最为详细的Docker入门吐血总结  https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html Docker是什么? 在计算机技术日新 ...

随机推荐

  1. 2017-07-08( bzip2 bunzip mount)

    .bz2 压缩格式  不能压缩目录 bzip2  源文件  (不保留源文件) bzip2 -k  源文件 (保留源文件) bzip2 -d  压缩文件名  (-k保留压缩文件) bunzip  压缩文 ...

  2. whoops php调试库

    Whoops 适用于PHP环境的错误捕获与调试PHP库: whoops非常容易使用,它提供stackbased错误捕获及超美观的错误查看 测试效果如下 安装步骤(composer安装) 安装完成之后在 ...

  3. linux_inode和block

    linux里一切皆文件 什么是文件属性? 文件本身带有的信息, 包括:索引节点编号. 文件类型以及权限.硬链接个数(备份作用).所有者.所属组.文件大小.修改月.修改日.时分 151387 -rw-- ...

  4. Android之MaterialDesign应用技术2-仿支付宝上滑搜索框缓慢消失

    PS:在这之前也就是上一篇介绍了MaterialDesign一些滑动删除.标题栏的悬浮效果等,如果没看过第一篇的小火鸡可以看一下,因为这篇是接着上一篇写的,有一些东西上一篇写过了这里就不在重复了(Ma ...

  5. python初识-day2

    1.模块初识 python中的库包括标准库和第三方库,需要使用时可直接导入,导入格式为"import  库模块",例如: import sys #sys为python的标准库 pr ...

  6. Linux cp 移动的时候报错

    报错如下: cp: omitting directory `./nginx-1.12.1'   原因: 要移动的目录下还存在有目录   解决: cp -r 文件名 地址   注意: 这里的-r代表递归 ...

  7. javascript-声明对象及其属性和方法

    /* 方法一 */ var p = new Object(); //声明对象 //为对象添加属性 p.width=300; p.height=400; p.num=4; p.autotime=3; / ...

  8. 2017-12-30-如何彻底清除现存GIT仓库的大量提交历史

    layout: post title: 2017-12-30-如何彻底清除现存GIT仓库的大量提交历史 key: 20171230 tags: GIT 版本管理 问答 modify_date: 201 ...

  9. 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

    'utf-8' codec can't decode byte 0xff in position 0: invalid start byte 觉得有用的话,欢迎一起讨论相互学习~Follow Me 今 ...

  10. Call to undefined function mysql_connect()错误原因

    从PHP5.0开始就不推荐使用mysql_connect()函数,到了php7.0则直接废弃了该函数,替代的函数是: mysqli_connect();