Category Archives: Virtualization

Docker Compose—简化复杂应用的利器

Compose是用于定义和运行复杂Docker应用的工具。你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成。 Continue reading

Posted in Ops, Virtualization.

在Windows下构建Docker开发环境

Docker提供了非常便利的环境可迁移性。不过Docker引擎使用了Linux专有的内核特性,在Windows下运行Docker看似是十分困难的事情。Docker官方为我们提供了Boot2Docker这个小工具,Boot2Docker会使用VirtualBox来创建一个包含Docker的Linux操作系统的虚拟机。我们执行的docker命令会运行在这个虚拟机实例中,这样我们的开发环境能也能快速迁移到正式的生产环境中。 Continue reading

Posted in Ops, Tools, Virtualization.

Docker & Weave实现跨主机容器互联

Docker是一个开源的应用容器引擎,本身功能已经逐步满足我们日常要求,但是一直对管理Docker容器之间的交互和跨主机集群的网络配置一直空缺,需要依赖外部工具来实现。最近看了一篇infoQ的文章:5个解决Docker网络问题的项目,概述了目前主流的五个工具:Weave、Kubernetes、CoreOS, Flannel、Pipework以及SocketPlane。其中Weave是由Zett.io公司开发的,它能够创建一个虚拟网络,用于连接部署在多台主机上的Docker容器,这样容器就像被接入了同一个网络交换机,那些使用网络的应用程序不必去配置端口映射和链接等信息。外部设备能够访问Weave网络上的应用程序容器所提供的服务,同时已有的内部系统也能够暴露到应用程序容器上。Weave能够穿透防火墙并运行在部分连接的网络上,另外,Weave的通信支持加密,所以用户可以从一个不受信任的网络连接到主机。下面我们实际来试一试吧。 Continue reading

Posted in Ops, Tools, Virtualization.

Docker 1.5 – 容器运行监控和只读容器

Docker 1.5正式版今年2月初发布了,在这个版本中Docker加入很多期望已久的新功能,其中只读容器和容器运行状态监控非常实用,让我们来看看吧!

升级到1.5

我的操作系统是CentOS 6.6,首先通过epel源来安装docker,里面附带了很多docker相关的启动脚本。这个docker的版本是1.4.1

OK~
配置监听端口

只读容器

在1.5版本中可以使用–read-only参数启动一个容器,使它的文件系统“只读”;这个功能可以让你为容器中运行的应用限定特定的文件写入路径;此功能结合“数据卷”(volumes)使用可以确保容器中运行的程序只能将数据写入到事先指定的路径下。 Continue reading

Posted in Ops, Virtualization.

使用registry构建Docker私有仓库

在Docker生态圈中,Docker仓库用于存储Docker镜像。官方的Docker hub存储了大量镜像,但是对于实际生产环境中,考虑到pull/push速度和保密性等因素,我们往往需要建立自己的镜像仓库服务。官方(docker-registry github )提供了一个registry images,使用这个images就可以快速完成本地镜像仓库的建立。 Continue reading

Posted in Virtualization.

使用supervisord管理容器进程

Docker可以在启动容器的时候通过设置Dockerfile中的CMD条目启动一个进程,但如果要在容器中同时启动多个进程,就需要使用进程管理工具了。supervisord(http://supervisord.org/introduction.html)是一个非常优秀的进程管理工具,使用Python开发。它可以在类UNIX系统的方式让用户来准确地监视和控制后台一定数量的服务进程。并作为一个天使进程让后台进程在当发生内部错误退出、或者进程被意外杀死时自动重启。除此之外,supervisord可以监控TCP端口,让其他主机通过客户端了命令supervisorctl通过HTTP协议直接对Server端进程进行启停,避免让进程/服务器管理者直接接触Shell或root用户。进程之间也有一个优先级和进程组关系,让管理员使用start all和stop all的关系来启动。 Continue reading

Posted in Ops, Tools, Virtualization.

Docker的CPU资源限制

Docker使用Linux cgroup来实现资源的限制(Linux Note – cgroup),对于CPU的限制有两种方法:

1.cpuset

CPU Set限定容器使用某个固定的CPU核。使用默认的libcontainer引擎时,可以通过--cpuset来指定进程/docker容器在执行时使用某几个固定的CPU。比如0-3或以逗号分割如0,3,4(0是第一个CPU)。如果使用lxc引擎,可以指定--lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"
agileek/cpuset-test给出了一种用于测试CPU的image,功能就是将指定的CPU资源用满。
Continue reading

Posted in Linux, Ops, Virtualization.

etcd使用手记

etcd是一个用于共享配置和服务的高可用键值存储系统,由CoreOS使用开发并作为CoreOS的基础服务启动。etcd的灵感来源于Apache ZooKeeper和doozer,其特点:
· 简单:可用curl进行操作(HTTP+JSON)
· 安全:可使用SSL客户端证书验证
· 快速:基准测试在每个实例1000次写入每秒
· 可靠: 使用Raft协议来进行合理的分布式
etcd是go语言写的,并使用Raft一致性算法来管理一个高可用的复制日志。Raft协议这里有个动画版教程,很赞的哦。当前etcd版本为0.4.6。 Continue reading

Posted in Ops, Virtualization.

Containerized MySQL&Redis by Docker

随着Docker和CoreOS的火爆,服务容器化将称为一种趋势,从而降低操作系统和应用程序的耦合度。本文在ubuntu 14.10下对MySQL和Redis的docker images进行简单测试。 Continue reading

Posted in Ops, Tools, Virtualization.

Docker入门

Develop, Ship and Run Any Application, Anywhere.
Docker consists of:
The Docker Engine – our lightweight and powerful open source container virtualization technology combined with a work flow for building and containerizing your applications.
Docker Hub – our SaaS service for sharing and managing your application stacks.
Docker hub(app仓库)也是docker的组成,可以在https://hub.docker.com/ 登录并注册一个docker账户,搜索、下载别人分享的docker app,也可以自己上传和保存自己修改/创建的docker app(即docker image托管)。hub repository上提供了APP非常丰富多彩,基本上囊括了常用的一切应用平台。相关资料参见:
Docker1.0发布—迈入云(DockerHub应用分发平台)端(Docker引擎)时代
http://www.openstack.cn/p1961.html
官方文档:
https://docs.docker.com/
另外官方有个在线模拟的tutorial,10分钟就可以了解docker的基本使用。
http://www.docker.com/tryit/
15个有用的docker技巧
http://www.21ops.com/linux/13512.html
Continue reading

Posted in Ops, Tools, Virtualization.