在一个分布式应用中,我们把应用的不同层叫做“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. html input验证只能输入数字,不能输入其他

    html input验证只能输入数字,不能输入其他 此方法为借鉴别人的,在此只做记录. <input type="text" onkeyup="if(!/^\d+$ ...

  2. WEB安全_csrf攻击

    什么是xss跨站攻击? 正常访问服务器A,用户信任并在服务器A上登录操作,服务器A保存着用户的session数据,这时用户并没有退出服务器A的系统,然后访问危险服务器B,本来是用户请求服务器返回数据, ...

  3. python_如何定义带参数的装饰器?

    案例: 实现一个装饰器,用它来检查被装饰函数的参数类型. 需求: 装饰器可以通过函数,指明函数参数类型,进行函数调用的时候,传入参数,检测到不匹配时,抛出异常 如何解决这个问题? 先要获取函数的签名, ...

  4. vs Code 运行一个本地WEB服务器

    VS Code作为前端开发工具,值得推荐,用上之后,爱不释手 当我们建立一个全静态的前端项目时,如果需要将整个项目运行起来也非常简单,两步即可: 1.安装npm install -g live-ser ...

  5. mysql关于char和varchar的查询效率问题

    看了好多资料都说 varchar(size) 可变长度的字符值,节省空间,查询效率低 char(size) 固定长度的字符值,浪费空间,查询效率高 但是实际测试  char(100)   varcha ...

  6. 豹哥嵌入式讲堂:ARM知识概要杂辑(2)- 第一款Cortex-M处理器

    1.天生荣耀:ARM Cortex-M处理器由来 ARM公司自2004年推出ARMv7内核架构时,摒弃了以往"ARM+数字"这种处理器命名方法(ARM11之前的处理器统称经典处理器 ...

  7. Halcon一日一练:创建三通道图像

    首先理解一个什么是三通道图像: 三通道图像就是彩色图像,我们之前黑白相机或黑白电视机都是彩用的灰阶图像,即单通道图像,一般是2的8次方个灰阶,即256个灰阶.彩色图像采用RGB,红绿蓝三个通道来合成彩 ...

  8. iOS项目——自定义UITabBar与布局

    在上一篇文章iOS项目——基本框架搭建中,我们详细说明了如何对TabBarItem的图片属性以及文字属性进行一些自定义配置.但是,很多时候,我们需要修改TabBarItem的图片和文字属性之外,还需要 ...

  9. CSS选择器的组合选择器之后代选择器和子元素选择器

    实例代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF ...

  10. CSS中的选择器之类选择器和id选择器

    1.css中的选择器: 1.类选择器,又叫class选择器 2.id选择器 3.html元素选择器(又叫标签选择器) 4.通配符选择器 5.伪类选择器 6.组合选择器(多元素选择器,子元素选择器,后代 ...