Docker 服务
1. Docker服务
作为一名后端攻城狮,对“服务”这个概念一定不陌生。比如,我们做一个会员系统,它可能会需要数据库、缓存、消息队列,这些都是中间件服务,除此以外可能还需要依赖其它的Dubbo服务。
在Docker中,服务就是用于生产环境的容器(“containers in production”)。我们可以这样来理解这句话,当我们运行某个镜像时,其实就产生了一个镜像实例,这个实例我们把它叫做容器,接下来我们对它做个升级,比如一些配置负载均衡,配置域名解析映射等,最终它以web服务的形式运行,那么这个升级版的容器就是Docker服务。可以设想一下开发一个Java应用程序是怎样的过程,首先建一个工程,然后编写代码,打成jar包,在内网运行,配置nginx,配置告警及监控,经过这一系列操作后,客户端才能通过公网访问到这个服务。(PS:类比Java的话,镜像就是类,容器就是对象,服务就是一个成型的APP产品,或者叫服务)
一个服务只运行一个映像,但是它将镜像运行的方式进行了编码,比如应该使用什么端口,应该运行多少个容器副本,以便服务具有所需的能力,等等。可以通过改变运行该软件的容器实例的数量来对服务进行扩容,从而为流程中的服务分配更多的计算资源。
幸运的是,使用Docker平台很容易定义、运行和扩容服务。只需要写一个docker-compose.yml文件即可。
2. 第一个docker-compose.yml文件
创建一个文件,文件命名为docker-compose.yml,将下列内容粘贴到文件中,保存

一个docker-compose.yml文件是一个YAML文件,它定义了Docker容器在生产环境中的行为。
这个docker-compose.yml文件告诉Docker要做以下事情:
- 从注册中心上pull(拉取)镜像
- 以web服务的形式运行该映像的5个实例,限制每个实例最多只能使用CPU单个内核时间的10%(也可以是“1.5”,表示每个实例只能使用1.5个内核)和50MB内存
- 如果一个容器失败,立即重启它
- 将主机上的4000端口映射到web的80端口
- 指示web容器通过叫webnet的负载均衡网络共享80端口
- 用默认设置定义webnet网络
3. 运行新的负载均衡的APP
首先,运行

接下来,给APP起个名字,比如叫getstartedlab

我们的单个服务堆栈在一台主机上运行了5个容器实例,让我们来看一看

除了“docker service ls”,我们还可以通过“docker stack services”来查看

还可以通过修改docker-compose.yml来动态的扩展app,修改为后需要再执行一次

完整的演示

4. 备忘单

Docker 服务的更多相关文章
- docker 服务注册
docker 服务注册 etcd docker run -d --name etcd -p 4001:4001 -p 7001:7001 elcolio/etcd
- Docker服务端防护
运行一个容器或应用程序的核心是通过 Docker 服务端.Docker 服务的运行目前需要 root 权限,因此其安全性十分关键. 首先,确保只有可信的用户才可以访问 Docker 服务.Docker ...
- 安装指定版本的docker服务
参考博客:Docker CE 镜像源站 参考博客:docker启动异常driver not supported 1. 说明 之前部署docker服务的时候都是安装最新的docker版本,并使用dock ...
- docker学习-----docker服务的安装
docker 以下观点个人理解,只做参考 一.docker本身的优势 1.docker他本身是一个容器,用来方便我们项目打包,做服务器虚拟化,统一开发者环境等多种优势:运行于docker上的项目可以快 ...
- Docker 随 docker服务重启
在创建时添加 重启 docker run --restart=always -d --name web -p : -v /data/web:/usr/local/tomcat/webapps tom ...
- 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World
操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...
- reboot 后 Docker服务及容器自动启动设置
https://blog.csdn.net/wxb880114/article/details/82904765 重启reboot操作系统后,发现docker 服务未启动,容器也未启动,天生反骨,怎么 ...
- CentOS 7安装Docker服务详细过程
---恢复内容开始--- Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟 ...
- 重启docker服务应用,自启停命令.
#重启docker服务应用,不自动开启docker容器 docker update --restart=no (docker容器CONTAINER ID 或 docekr容器NAMES) #重启doc ...
随机推荐
- Kali Linux信息收集工具
http://www.freebuf.com/column/150118.html 可能大部分渗透测试者都想成为网络空间的007,而我个人的目标却是成为Q先生! 看过007系列电影的朋友,应该都还记得 ...
- Python中urllib.urlencode中文字符的一个问题
Django项目在访问Restful service时调用urllib.urlencode编码中文字符串时碰到下面这个错误. v = quote_plus(str(v)) UnicodeEncodeE ...
- 强大的代码编辑器 phpstorm version 2016.2 License Server激活
"磨刀不误砍柴工","工欲善其事必先利其器",找个一个好的代码开发编辑工具可以让我们事半功倍,并且代码质量得到保障,在这里就推荐一款强大的代码编辑器,不对其实可 ...
- 安装RabbitMQ编译erlang时,checking for c compiler default output file name... configure:error:C compiler cannot create executables See 'config.log' for more details.
checking for c compiler default output file name... configure:error:C compiler cannot create executa ...
- cnblog 模板 SimpleMemory 个性化设置代码备份
/页面顶部作者名/ blogTitle h1 { font-size: 50px; margin-top: 0px; } /页面简介/ blogTitle h2 { letter-spacing: 1 ...
- PAT1132: Cut Integer
1132. Cut Integer (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Cutting a ...
- 如何使用RedisTemplate访问Redis数据结构
RedisTemplate介绍 spring封装了RedisTemplate对象来进行对redis的各种操作,它支持所有的 redis 原生的api. RedisTemplate在spring代码中的 ...
- 并发容器之CopyOnWriteArraySet
CopyOnWriteArraySet是基于CopyOnWriteArrayList实现的,其唯一的不同是在add时调用的是CopyOnWriteArrayList的addIfAbsent方法. 具体 ...
- spring cloud中利用sidecar整合异构语言(转)
用spring cloud sidecar的整合异构语言,以前做过没有做笔记,现在再做由于各种坑又浪费了一天,这里记一下 首先是官网:http://cloud.spring.io/spring-clo ...
- Using variables inside Postman and Collection Runner
Variables are among the most powerful features in Postman. Using variables in your Postman requests, ...