博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker入门系列(三):让你的应用变为可扩展的服务
阅读量:5310 次
发布时间:2019-06-14

本文共 2783 字,大约阅读时间需要 9 分钟。

准备工作

  • 安装docker,版本最低1.13
  • 准备 , 以及 都已经预装了compose。linux系统需要自己安装,。
  • 了解
  • 了解
  • 确保在上一节创建的friendlyhello已经发布到registry,一会儿会使用到此镜像

介绍

在这一节中,我们将应用扩容,并支持负载均衡,这一节着重介绍service

  • Stack
  • Services (<-you are)
  • Container ()

Services

在分布式环境中,services有很多不同的应用实例构成。想象一下,你拥有一个大型的视频分享网站,这个网站比如包含一个服务用来处理数据存储,另一个服务在后台做视频编解码,还有一个服务作为API接入层等等。

一个服务只运行一种镜像,但是它定义了镜像运行的方式,比如,使用什么端口,运行多少容器的副本,在Docker平台上,使用docker-compose.yml 可以非常方便的对服务进行定义、运行、扩容。

第一个docker-compose.yml

docker-compose.yml是yaml格式的,它定义了Docker容器在生产环境的运行方式。

docker-compose.yml

version: "3"services:  web:    # replace username/repo:tag with your name and image details    image: username/repo:tag    deploy:      replicas: 5      resources:        limits:          cpus: "0.1"          memory: 50M      restart_policy:        condition: on-failure    ports:      - "80:80"    networks:      - webnetnetworks:  webnet:

这个docker-compose.yml 定义了如下行为:

  • 从registry上Pull在第二节上传的
  • 运行5个实例作为一个取名为web的service,限制每一个实例最多使用10%的cpu,50MB内存
  • 容器失败后立即重启
  • 将web的80端口映射到宿主机的80端口上
  • 通过webnet在容器间共享80端口,达到负载均衡的目的(在内部, 容器将映射80端口到一个临时端口上)
  • webnet 的网络进行默认设置

启动负载均衡的应用

启动swarm manager

docker swarm init

启动service,并命名为getstartedlab

docker stack deploy -c docker-compose.yml getstartedlab

运行以上的命令后,在一个宿主机上启动5个容器实例。

查看service的Id

docker service ls

ID NAME MODE REPLICAS IMAGE PORTS

pxfbw2lyo4bo getstartedlab_web replicated 5/5 ruccsbingo/get-started:part2 *:80->80/tcp

Docker swarms启动5个tasks来运行containers,可以使用ps命令查看这些tasks。

docker service ps

ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS

ly162fal310t getstartedlab_web.1 ruccsbingo/get-started:part2 moby Running Running 27 seconds ago

ghrcp7fzjaub _ getstartedlab_web.1 ruccsbingo/get-started:part2 moby Shutdown Shutdown 30 seconds ago

t1jh0d1jsbj8 getstartedlab_web.2 ruccsbingo/get-started:part2 moby Running Running about a minute ago

qdl4t4izqsza getstartedlab_web.3 ruccsbingo/get-started:part2 moby Ready Ready 10 seconds ago

nttsh0krytde _ getstartedlab_web.3 ruccsbingo/get-started:part2 moby Shutdown Running 10 seconds ago

wc9xqpqehwvx getstartedlab_web.4 ruccsbingo/get-started:part2 moby Running Running 10 seconds ago

m8xjlizio550 _ getstartedlab_web.4 ruccsbingo/get-started:part2 moby Shutdown Shutdown 13 seconds ago

t37arxf436d5 getstartedlab_web.5 ruccsbingo/get-started:part2 moby Running Running about a minute ago

使用如下命令列出containers

docker container ls -q

使用curl验证

Hello World!

Hostname: a8ee4747d8d7

Visits: cannot connect to Redis, counter disabled%

服务扩容

更改docker-compose.yml文件中replicas的数量,重启整个服务。

docker stack deploy -c docker-compose.yml getstartedlab

Docker将会做in-place替换,不用先停服务,或者kill容器。

停止service和swarm

停止service的命令

docker stack rm getstartedlab

停止swarm manager

docker swarm leave --force

到目前为止,你已经学会了如何使用swarm进行服务的上线,扩容,下线操作。在一下节中,会介绍在集群上执行上线,扩容,下线操作。

转载于:https://www.cnblogs.com/ruccsbingo/p/7670134.html

你可能感兴趣的文章
MapXtrem + Asp.net 地图随窗体改变大小
查看>>
AdaBoost算法分析与实现
查看>>
前端知识点总结1
查看>>
在table表格中实现圆角效果
查看>>
文件帮助类(解压,压缩)
查看>>
linux组调度浅析
查看>>
UNIX网络编程——客户/服务器程序设计示范(三)
查看>>
在争取的路上,为艰苦奋斗的适用人群建议
查看>>
opencv2.4.9+vs2010 的配置方法
查看>>
关键字
查看>>
API对接中经常会出现的签名获取,这只是某一种,仅供给有需要的人参考
查看>>
sed简单使用(五)选择性删除
查看>>
1.1 Hello Qt 开始
查看>>
hdu 5690(模运算)
查看>>
hdu 4541(麻烦的模拟)
查看>>
关于外存索引
查看>>
PHP抽象类与接口的区别
查看>>
Git_初步了解
查看>>
详解在中国最成功的连锁餐饮企业——百胜集团
查看>>
Spring Boot Autowirted注入找不到Bean对象解决方法
查看>>