在一个分布式应用中,我们把应用的不同层叫做“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. 数据存储之HTTP Cookie

    Cookie (HTTP Cookie) 作用 HTTP本身是无状态的,客户端通过Cookie来存储会话信息 限制 cookie在性质上是绑定在特定域名下的 意思是说当设定了一个cookie之后,再给 ...

  2. js设置定时器

    1,利用settimeout,语法: setTimeout(/*执行代码*/, /*毫秒*/);每过多少毫秒执行一次代码 <button id="sms">发送验证码& ...

  3. <global-results>标签来定义全局的<result>

    <global-results> <result name="error">/Error.jsp</result>   <!--   Ac ...

  4. js中的一元加法和一元减法

    大多数人都熟悉一元加法和一元减法,它们在 ECMAScript 中的用法与您高中数学中学到的用法相同. 一元加法本质上对数字无任何影响: var iNum = 20; iNum = +iNum; al ...

  5. 【转】shell学习笔记(三)——引用变量、内部变量、条件测试、字符串比较、整数比较等

    1.env显示当前的环境变量 2.PS1='[\u@\h \w \A] \$' 可以设置bash的命令与提示符. 3.echo $$ 显示当前bash的PID号 4.echo $?显示上一条指令的回传 ...

  6. 最全 Linux 磁盘管理基础知识全汇总

    一.存储设备的挂载和卸载 存储设备的挂载和卸载常用操作命令:fdisk  -l.df.du.mount.umount. fdisk  -l 命令 1.作用 查看所有硬盘的分区信息,包括没有挂上的分区和 ...

  7. 监控mysql主从同步状态

    在高并发网站架构中,MySQL数据库主从同步是不可或缺的,不过经常会发生由于网络原因或者操作错误,MySQL主从经常会出现不同步的情况,那么如何监控MySQL主从同步,也变成网站正常运行的重要环节. ...

  8. 服务器开发之CGI后门

    1.html代码 <form id = "form" name="form" method="post" action=". ...

  9. Python之Django rest_Framework(2)

    实例化: v1 = ["view.xxx.path.Role","view.xxx.path.Group",] 可以循环,循环出来的每一个不能实例化 如果把v1 ...

  10. CentOS7系统配置国内yum源和epel源

    1.首先进入/etc/yum.repos.d/目录下,新建一个repo_bak目录,用于保存系统中原来的repo文件 [root@bogon ~]# cd /etc/yum.repos.d/ [roo ...