Mryqu's Notes


  • 首页

  • 搜索
close

Vagrant运行Docker的几种方法

时间: 2015-06-15   |   分类: Tool   Vagrant     |   阅读: 206 字 ~1分钟
Vagrant的docker provisioner能够自动安装Docker、下载Docker容器、随着vagrant up命令自动运行容器。 Vagrantfile Vagrant.configure("2") do |config| config.vm.provision "docker" do |d| d.pull_images "consul" d.run "consul" d.pull_images "rabbitmq" d.run "rabbitmq" end end 仅使用Vagrant的docker provisioner安装Docker,使用脚本下载并运行Docker容器 Vagrantfile # Install Docker config.vm.provision "docker" # Download Docker images, create and start containers config.vm.provision :shell, :path => "runMyDockers.sh" runMyDockers.sh #!/bin/bash docker rm -f consul 2>/dev/null docker create --hostname consul --name consul -v /data/consul1:/data --dns 127.0.0.1 --restart always -p 8500:8500 --env CONSUL_OPTIONS=-bootstrap consul:dev docker start consul docker rm -f rabbitmq 2>/dev/null docker create --name rabbitmq --hostname rabbitmq -p 5672:5672 -v /data/rabbitmq:/data --dns 127.
阅读全文 »

Consul实践

时间: 2015-06-14   |   分类: Tool   Consul     |   阅读: 131 字 ~1分钟
Consul简介 最近除了在用Hashicorp公司的Vagrant,也使用了Consul。Consul是一款以跨数据中心、高可用的方式提供服务注册、发现、配置和编排的工具。Consul可以用来回答一个企业的基础设施中,诸如下列这些问题: “服务X在哪里” “服务Y的实例是否健康” “当前正在运行的服务是什么” “服务Z的配置是怎样的” “在我的平台上是否还有其他人在执行操作A?” Consul通过DNS或HTTP API提供服务发现功能,同时支持跨数据中心的内部服务或外部服务的发现。使用shell脚本实现了健康检查,并允许创建自定义的服务验证协议。Consul还提供了高可用的键值对存储,由此可以暴露一致的存储值,用于配置参数的调优,而不必非要执行配置管理工具。可调优的操动实例包括指定服务的位置、指明系统处于维护模式,或者设置服务的QoS参数。Consul还提供了一套编排原语、通过UDP协议跨数据中心广播异步“事件”、通过TCP协议让指定的计算机同步执行“exec”指令,以及通过实现长轮询、react、事件机制或者其他操作实现定制化的监控。 安装Consul echo Installing dependencies... sudo apt-get install -y unzip curl echo Fetching Consul... cd /tmp/ wget https://dl.bintray.com/mitchellh/consul/0.5.2_linux_amd64.zip -O consul.zip echo Installing Consul... unzip consul.zip sudo chmod +x consul sudo mv consul /usr/mryqu/consul echo Fetching Consul UI... cd /tmp/ wget https://dl.bintray.com/mitchellh/consul/0.5.2_web_ui.zip -O dist.zip echo Installing Consul UI... unzip dist.zip sudo chmod +x dist sudo mv dist /usr/mryqu/consul/dist 引导一个数据中心 首先以服务器模式运行第一个Consul代理。Consul需要使用-bootstrap-expect指定集群节点个数,使用-data-dirparameter指定一个数据目录名,使用-ui-dir参数指定Consul UI目录: $>consul agent -server -bootstrap-expect 1 -data-dir /usr/mryqu/consul/consuldata -ui-dir /usr/mryqu/consul/dist UI默认地址是http://localhost:8500/ui 如果UI没有启动,需要添加额外的-client 0.
阅读全文 »

[OpenUI5] sap.ui.core.ResizeHandler

时间: 2015-06-14   |   分类: FrontEnd     |   阅读: 282 字 ~2分钟
OpenUI5里窗口大小放生变化,各个控件如何收到通知跟着相应变化的呢? sap.ui.core.Core 首先我们看一下sap.ui.core.Core的源代码: Core._I_INTERVAL = 200; ResizeHandler.prototype.I_INTERVAL = Core._I_INTERVAL; Core.prototype.attachIntervalTimer = function(fnFunction, oListener) { if (!this.oTimedTrigger) { var IntervalTrigger = sap.ui.requireSync("sap/ui/core/IntervalTrigger"); this.oTimedTrigger = new IntervalTrigger(Core._I_INTERVAL); } this.oTimedTrigger.addListener(fnFunction, oListener); }; sap.ui.core.Core里面会起一个定时器,以200毫秒间隔周期触发。 sap.ui.core.ResizeHandler 接下来我们看一下sap.ui.core.ResizeHandler的源代码: function initListener(){ if (!this.bRegistered && this.aResizeListeners.length > 0) { this.bRegistered = true; sap.ui.getCore().attachIntervalTimer(this.checkSizes, this); } } ResizeHandler.prototype.checkSizes = function() { var bDebug = log.isLoggable(); if ( bDebug ) { log.debug("checkSizes:"); } jQuery.each(this.aResizeListeners, function(index, oResizeListener){ if (oResizeListener) { var bCtrl = !
阅读全文 »

[OpenUI5] 通过sap.ui.core.Core的registerElement和deregisterElement函数监控View和控件的构造和析构

时间: 2015-06-13   |   分类: FrontEnd     |   阅读: 123 字 ~1分钟
在sap.ui.core.Core中有registerElement和deregisterElement函数,它们可用于在调试中监控Element(包括View和控件)的构造和析构。 registerElement:在控件构造时被调用 deregisterElement:在控件析构时被调用 通过下面的代码可知,Core类的mElements存储着元素Id和元素的散列表: Core.prototype.registerElement = function(oElement) { var sId = oElement.getId(), oldElement = this.mElements[sId]; if ( oldElement && oldElement !== oElement ) { if ( oldElement._sapui_candidateForDestroy ) { jQuery.sap.log.debug("destroying dangling template " + oldElement + " when creating new object with same ID"); oldElement.destroy(); } else { // duplicate ID detected => fail or at least log a warning if (this.oConfiguration.getNoDuplicateIds()) { jQuery.sap.log.error("adding element with duplicate id '" + sId + "'"); throw new Error("Error: adding element with duplicate id '" + sId + "'"); } else { jQuery.
阅读全文 »

使用Vagrant创建开发环境

时间: 2015-06-12   |   分类: Tool   Vagrant     |   阅读: 7 字 ~1分钟
用思维导图写了一篇[Packt Publishing] Creating Development Environments with Vagrant读书笔记。

通过环境变量修改VAGRANT BOX参数

时间: 2015-06-12   |   分类: Tool   Vagrant     |   阅读: 34 字 ~1分钟
在如下示例Vagrantfile文件片段,VAGRANTBOX的内存和CPU核数首先查询环境变量,如果没有设相关环境变量的话则使用默认值。 config.vm.provider "virtualbox" do |v| v.memory = ENV.has_key?('VAGRANTBOX_MEM') ? ENV['VAGRANTBOX_MEM'].to_i : 1024 v.cpus = ENV.has_key?('VAGRANTBOX_CPUS') ? ENV['VAGRANTBOX_CPUS'].to_i : 2 v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] v.customize ["modifyvm", :id, "--cpuexecutioncap", "75"] end 参考 Vagrant VirtualBox Configuration

cAdvisor实践

时间: 2015-06-11   |   分类: Tool   Docker     |   阅读: 9 字 ~1分钟
cAdvisor (Container Advisor)为运行容器的用户提供出色的资源使用和性能特征。这是一个运行守护进程,能够搜集、集料、处理和导出运行中的容器的信息。特别需要指出,每个容器都有资源隔离参数、历史资源使用、以及完整历史数据的柱状图。 cAdvisor目前支持Docker容器和lmctfy容器。 运行cAdvisor容器 配置boot2docker与宿主机之间的端口转移 查看cAdvisor 参考 GitHub:cAdvisor

DockerUI实践

时间: 2015-06-10   |   分类: Tool   Docker     |   阅读: 21 字 ~1分钟
DockerUI是Docker远程API的Web接口,它是由下列技术栈构成的纯客户端,因此很容易连接和管理Docker。 Angular.js Bootstrap Gritter Spin.js Golang Vis.js 运行DockerUI容器 配置boot2docker与宿主机之间的端口转移 另一种方式是在启动容器之前执行: boot2docker ssh -L 9000:localhost:9000 查看DockerUI 直接使用Docker远程API 参考 GitHub:crosbymichael/dockerui Docker Remote API

Spring FileUpload限制调整笔记

时间: 2015-06-08   |   分类: Service+JavaEE   Spring     |   阅读: 291 字 ~2分钟
Tomcat配置 HTTP Connector - maxPostSize配置 maxPostSize: 在POST请求中容器FORMURL参数解析所能处理的最大字节数。该参数可以通过设置为小于零的负值禁掉该限制。如果没有设置,该属性为2097152(2M字节)。 该配置可在$CATALINA_BASE/conf/server.xml内修改: Tomcat 7.0.63之前maxPostSzie=“0"视为禁掉该限制。 multipart-config配置 max-file-size: 单个上传文件允许的最大字节数。默认-1,无限制。 max-request-size: 真个请求允许的最大字节数。默认-1,无限制。 这两个配置可在web.xml内修改: 如果上传文件超过限制,则会抛出Exception。示例: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (61198097) exceeds the configured maximum (20971520) at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.(FileUploadBase.java:811) at org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:256) at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:280) at org.apache.catalina.connector.Request.parseParts(Request.java:2730) at org.apache.catalina.connector.Request.parseParameters(Request.java:3064) at org.apache.catalina.connector.Request.getParameter(Request.java:1093) at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:380) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:70) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:68) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.
阅读全文 »

Docker Compose笔记

时间: 2015-06-06   |   分类: Tool   Docker     |   阅读: 113 字 ~1分钟
Docker Compose概述 **DockerCompose** **前身 Fig** Compose是用于在Docker内定义和运行多容器应用程序的工具。使用Compose,可以在一个文件内定义多容器应用程序,然后使用一个命令运行应用。 Compose对开发环境、交付准备服务器(stagingservers)和持续集成(CI)很有帮助,不建议用于生产环境。 使用Compose基本上是三步流程: - 通过一个`Dockerfile`定义应用环境,以便在其他地方复制; - 在`docker-compose.yml`中定义组成应用的服务,因此他们可以在一个隔离的环境一起运行; - 最后,运行`docker-compose up`,Compose将启动并运行整个应用。 docker-compose.yml大概是这个样子的: web: build: . ports: - "5000:5000" volumes: - .:/code links: - redis redis: image: redis Compose包含管理应用整个生命周期的命令: 启动、停止和重建服务 查看运行的服务状态 对运行的服务的日志输出生成数据流 对一个服务运行一次性命令 Docker Compose安装 curl -L https://github.com/docker/compose/releases/download/VERSION_NUM/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose $ chmod +x /usr/local/bin/docker-compose Docker Compose命令 更新整个应用 mryqu$ docker-compose stop # stop the containers mryqu$ docker-compose pull # download updated images mryqu# docker-compose up -d # creates new containers and starts them 更新单个服务 mryqu$ docker-compose stop foo # stop the foo service mryqu$ docker-compose pull foo # download foo service mryqu$ docker-compose up -d foo # start the new foo service 参考 Overview of Docker Compose
阅读全文 »
25 26 27 28 29 30 31 32 33

Programmer & Architect

662 日志
27 分类
1472 标签
RSS 订阅
GitHub Twitter FB Page
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%