Docker 入门(Mac环境)- part 3 服务(services)
part-3 服务(services)
简介
一个应用的规模的扩大是很常见的事情,会经常用到负载均衡这些,如要实现这些功能,我们就会用到docker中更高一层的东西-service(服务)。
比如说一个视频分享网站,包括存储的部分,前端展示的部分,这些不同的部分就可以称之为服务。定义/运行/管理成规模的应用在docker中很容易实现,通过一个docker-compose.yml文件就可以了。
docker-compose.yml文件
创建一个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:
- "4000:80"
networks:
- webnet
networks:
webnet:
配置文件的各项指标的含义:把这个服务称之为“web”,版本是3,5个拷贝,每个用cpu不超过10%,内存不超过50M,失败了就重启,端口映射是4000到80,通过webnet实现负载均衡。
app启动
- 在用
docker stack deploy
之前可以使用docker swarm init
来初始化一下,然后通过docker stack deploy -c docker-compose.yml getstartedlab
来启动,可以通过docker service ls
查看进程,效果如下:
➜ docker_file docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
k0315l4qcvdo getstartedlab_web replicated 5/5 wang/get-started:part-2 *:4000->80/tcp
- 通过
docker service ps getstartedlab_web
可以查详细进程
➜ docker_file docker service ps getstartedlab_web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
s9ygrgj69gxp getstartedlab_web.1 wang/get-started:part-2 linuxkit-025000000001 Running Running 2 minutes ago
xy1ot8kxyqac getstartedlab_web.2 wang/get-started:part-2 linuxkit-025000000001 Running Running 2 minutes ago
r7x6c9rpf1dg getstartedlab_web.3 wang/get-started:part-2 linuxkit-025000000001 Running Running 2 minutes ago
ogx1pyedra2e getstartedlab_web.4 wang/get-started:part-2 linuxkit-025000000001 Running Running 2 minutes ago
63a32pzagsr2 getstartedlab_web.5 wang/get-started:part-2 linuxkit-025000000001 Running Running 2 minutes ago
- 查看container
➜ docker_file docker container ls -q
596ea073ac78
5059346a8474
bde0a1787a38
9c6e956b3d05
d450035e17b8
- 查看多个拷贝(负载均衡)运行的效果,用了下面命令后然后浏览器刷新几次页面,会发现有hostname的变化
➜ docker_file curl -4 http://localhost:4000
<h3>Hello World!</h3><b>Hostname:</b> bde0a1787a38<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>%
参数调整
- 调整yml后可以通过
docker stack deploy -c docker-compose.yml getstartedlab
来更新
关闭应用和swarm
docker stack rm getstartedlab
- 离开swarm,
docker swarm leave --force
- 这里的感觉就是swarm相当于一个基础环境,类似于virtualenv这种概念
Docker 入门(Mac环境)- part 3 服务(services)的更多相关文章
- Docker 入门 第三部分: 服务
目录 Docker 入门 第三部分: 服务 先决条件 介绍 你的第一个 docker-compose.yml 文件 docker-compose.yml 运行你新建的负载均衡应用 扩展应用程序 卸载应 ...
- Docker入门(四):服务(Services)
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- docker for mac
MacOS上通过docker部署 docker环境准备 1.访问这里安装好docker,需要注册账号才能下载dmg安装包:https://hub.docker.com/editions/communi ...
- Docker 入门(Mac环境)-part 1 入门基本操作
part-1 入门基本操作 Docker 安装 去官网下载对应的版本,然后点击安装就可以了: 如果环境是Linux,可以参照之前写的get started教程 查看docker版本 docker -- ...
- 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World
操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...
- mac下通过docker搭建LEMP环境
在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...
- Docker学习笔记之在开发环境中使用服务发现
0x00 概述 服务发现应用是很多服务化系统的组成部分,所以在开发.测试环境中也就有必要配备一套服务发现体系来配合我们的开发.测试工作.在这一小节里,我们就来谈谈如何在 Docker 环境下部署服务发 ...
- Mac下docker搭建lnmp环境 + redis + elasticsearch
之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...
- docker入门与部署微服务--学习笔记
最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...
- Mac 环境部署Docker私有仓库
docker的私有仓库类似maven的私服,一般用于公司内部搭建一个类似docker hub的环境,这样上传.下载镜像速度较快,本文将演示如何在mac上利用docker-machine搭建无需SSL证 ...
随机推荐
- iOS 上传App Store提示WARNING ITMS-90703错误的说明
今天上传app到appstore的时候,上传到最后一步的时候,报了一个警告: 原文如下: WARNING ITMS-90703: "Deprecated Xcode Build. Due t ...
- HttpClient库设置超时
HttpClient库API跟Lucene一样,每个版本的API都变化很大,这有点让人头疼.就好比创建一个HttpClient对象吧,每一个版本的都不一样. 3.X是正常的Java语法 HttpCli ...
- 我的第一个Raspberry PI装置
好吧,我先承认是这是从书上学习的第一个示例. 我入手的是Raspberry红版,版本2,看到这么小巧的卡片电脑可以做这么多事情,真是让人惊喜! 安装系统等都很顺利,启动.安装程序.远程桌面.SSH登录 ...
- 关于Linux防火墙'iptables'的面试问答
1. 你听说过Linux下面的iptables和Firewalld么?知不知道它们是什么,是用来干什么的? 答案 : iptables和Firewalld我都知道,并且我已经使用iptables好一段 ...
- FluentScheduler
The job configuration is handled in a Registry class. A job is either an Action or a class that inhe ...
- System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded
昨天客户跟我说,突然一个页面频繁地报ThrowIfMaxHttpCollectionKeysExceeded这个异常.而且是数据量大的时候报错,数据量小的时候OK. 根据异常的名称也能看得差不多超过了 ...
- Mac 安装任何来源的文件
1.Mac 安装任何来源的文件 安装软件提示文件损坏怎么处理,打开 DMG 文件提示损坏怎么处理,来自不信任的开发者怎么处理,macOS Sierra 如何安装任何来源的文件. 非常肯定的告诉您不是我 ...
- 【Linux】字符转换命令tr
tr (traslate的缩写)可以用来删除一段信息当中的文字,或者是进行文字信息的替换! [root@www ~]# tr [-ds] SET1 ... 选项与参数: -d :删除信息当中的 SET ...
- .net core下直接执行SQL语句并生成DataTable
.net core可以执行SQL语句,但是只能生成强类型的返回结果.例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs& ...
- mac mini 制作fusion drive 的方法
下载yosemite,格式化磁盘,运行如下命令,制作os x 启动盘 sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resour ...