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)的更多相关文章

  1. Docker 入门 第三部分: 服务

    目录 Docker 入门 第三部分: 服务 先决条件 介绍 你的第一个 docker-compose.yml 文件 docker-compose.yml 运行你新建的负载均衡应用 扩展应用程序 卸载应 ...

  2. Docker入门(四):服务(Services)

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  3. docker for mac

    MacOS上通过docker部署 docker环境准备 1.访问这里安装好docker,需要注册账号才能下载dmg安装包:https://hub.docker.com/editions/communi ...

  4. Docker 入门(Mac环境)-part 1 入门基本操作

    part-1 入门基本操作 Docker 安装 去官网下载对应的版本,然后点击安装就可以了: 如果环境是Linux,可以参照之前写的get started教程 查看docker版本 docker -- ...

  5. 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World

    操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...

  6. mac下通过docker搭建LEMP环境

    在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...

  7. Docker学习笔记之在开发环境中使用服务发现

    0x00 概述 服务发现应用是很多服务化系统的组成部分,所以在开发.测试环境中也就有必要配备一套服务发现体系来配合我们的开发.测试工作.在这一小节里,我们就来谈谈如何在 Docker 环境下部署服务发 ...

  8. Mac下docker搭建lnmp环境 + redis + elasticsearch

    之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...

  9. docker入门与部署微服务--学习笔记

    最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...

  10. Mac 环境部署Docker私有仓库

    docker的私有仓库类似maven的私服,一般用于公司内部搭建一个类似docker hub的环境,这样上传.下载镜像速度较快,本文将演示如何在mac上利用docker-machine搭建无需SSL证 ...

随机推荐

  1. Python实现鸢尾花数据集分类问题——基于skearn的NaiveBayes

    Python实现鸢尾花数据集分类问题——基于skearn的NaiveBayes 代码如下: # !/usr/bin/env python # encoding: utf-8 __author__ = ...

  2. React(0.13) 定义一个input组件,使其输入的值转为大写

    <!DOCTYPE html> <html> <head> <title>React JS</title> <script src=& ...

  3. Sqlserver大数据量分区表创建

    /* 逆向删除对象 DROP PARTITION SCHEME [PS_BasicPolicy2014]; DROP PARTITION FUNCTION [PF_BasicPolicy2014]; ...

  4. 【java】浅析java组件中的布局管理器

    这篇博文笔者介绍一下java组件中,常用的布局管理器.java组件中的布局方式有好几十种,所有的这些布局管理器都实现了java.awt.LayoutManager接口.接下来笔者介绍一下常用的5种布局 ...

  5. 【ASP.NET】Layout使用详解

    1.母板页_Layout.cshtml 类似于传统WebForm中的.master文件,起到页面整体框架重用的目地 1.母板页代码预览 1 <!DOCTYPE html> 2 <ht ...

  6. Spark日志清洗

    日志数据清洗,主要采用spark 的定时任务,清洗出有效数据,并保存到hive数据仓库中存储.常用流程如下: 参考:https://gaojianhua.gitbooks.io/bigdata-wik ...

  7. linux手工释放内存

    先使用sync命令以确保文件系统的完整性,sync 命令运行 sync 子例程,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node.已延迟的块 I/O 和读写映射文件. 再执行下面任意一条命 ...

  8. VMware Linux 共享文件夹 虚拟机无共享文件解决方法

    恢复虚拟机ubuntu后,首先,点击 虚拟机——安装VMware Tools(Install VMware Tools),这时我们会在Ubuntu系统桌面上发现VMware Tools的光盘图标. 双 ...

  9. Redis命令汇总

    设置服务后台启动 cd /usr/local/redisview redis.conf 将daemonize no改为 daemonize yes保存退出 启动:./reids-server redi ...

  10. JPA的多表复杂查询

    转 JPA的多表复杂查询:详细篇 原文链接: https://mp.weixin.qq.com/s/7J6ANppuiZJccIVN-h0T3Q 2017-11-10 从小爱喝AD钙  最近工作中由于 ...