Deis

Deis

Deis正式加入微软

李颖杰 发表了文章 • 0 个评论 • 2081 次浏览 • 2017-04-11 08:21 • 来自相关话题

容器技术正在迅速改变团队构建、打包、交付以及管理应用程序的具体方式。强大而开放的容器编排方案,配合新型应用程序架构,正为各类组织机构带来前所未有的灵活性与多样性选项。从容器技术诞生之初到Kubernetes的强势崛起,Deis一直专注于构建并贡献多项开源技术成 ...查看全部
容器技术正在迅速改变团队构建、打包、交付以及管理应用程序的具体方式。强大而开放的容器编排方案,配合新型应用程序架构,正为各类组织机构带来前所未有的灵活性与多样性选项。从容器技术诞生之初到Kubernetes的强势崛起,Deis一直专注于构建并贡献多项开源技术成果,旨在帮助开发者与运营者得以更为轻松地构建及运行应用程序。

【深圳站|3天烧脑式Kubernetes训练营】培训内容包括:Kubernetes概述和架构、部署和核心机制分析、进阶篇——Kubernetes调工作原理及源码分析等。

今天,我们高兴地宣布,Deis将正式加入微软公司,并将继续推动自身使命——即不断提升容器技术的易用性。微软拥有悠久的开发者工具与技术方案构建历史。凭借着微软方面云业务的领导地位与对开源软件的大力支持及配合,我们对于微软技术在帮助定义、形成以及构建新型云原生应用程序举措方面的深度与广度感到钦佩不已。我们期待着微软Azure能够成为运行容器化工作负载的最佳平台。

我们很荣幸能够通过微软庞大的用户群体以及一系列外部贡献者进一步提升自身体验水平并发布更多开源项目。多年以来,我们一直努力扮演开放、可靠且值得信赖的开源维护者角色。立足于微软这一全新大家庭,我们必将不断拓展自身贡献能力。我们将继续为Workflow、Helm以及Steward的发展贡献力量,同时继续深入参与到Kubernetes技术社区中来。微软公司的开源基础设施发展前景必将一片光明。

在这里,我们还要向客户、社区成员、合作伙伴、家人及朋友致以诚挚的谢意。 感谢大家发布的GitHub问题、pull请求、在我们#community Slack频道中的帮助、bug修复以及经验共享。我们将在这条道路上继续保持不懈努力。

欲了解更多与这一振奋人心的消息相关之细节信息,请点击此处阅读Scott Guthrie发布的博文。

原文链接:Deis to Join Microsoft

一个深度IT从业者的自白

ITGeGe 发表了文章 • 2 个评论 • 2884 次浏览 • 2016-05-23 19:16 • 来自相关话题

最近一直在想,做了这么多年IT,最终要做成什么样子?是继续钻研代码,誓把技术坐穿,成为顶尖程序员; > 还是转做管理,尝试统筹和调度,跟认识的不认识的、喜欢的不喜欢的人推杯换盏? > 可惜,这两种都不是我想要的,我不想做一个孤独的程序猿 ...查看全部

最近一直在想,做了这么多年IT,最终要做成什么样子?是继续钻研代码,誓把技术坐穿,成为顶尖程序员;
> 还是转做管理,尝试统筹和调度,跟认识的不认识的、喜欢的不喜欢的人推杯换盏?
> 可惜,这两种都不是我想要的,我不想做一个孤独的程序猿也不想劳心做管理,我只想在钻研技术的间隙里还能做点其他有意义的事。
>
> 既不离开技术,又比死守技术有趣的多;分享技术经验,成为自品牌名师无疑是最好的选择!





交朋友的重要性

有人问我,成功的最主要条件是什么?技术?NO,资质?NO,阅历?NO。
是时势,是平台,是圈子!
时势造英雄,一定要顺势而为,千万不要逆势而行,不然你会死的很惨。
成功不是靠一个人的默默努力,而是一群人的帮助和参与。
给你最权威最专业的IT从业者圈子,拓展自己的人脉,换你,你来不来?


头图.jpg



能不能不加班


一入IT深似海,从此下班是路人。
刚入职那会我拼命工作是因为新人需要磨练;7X12加班加点是因为升职加薪的压力;单身时吃住公司是因为一人吃饱全家不饿没有后顾之忧;
现在呢?日益隆起的肚子,越来越差的健康状况,看不到头的职业前景,午夜回家的灯光和温热的饭菜......
三尺办公桌不再是我的舞台,镜头前的自己才是我想要的样子。可以自由的支配时间,给家人和朋友更多的陪伴,谁说IT男就得苦逼兮兮的加班!?



IT界的网红,不小心就出名了


没有人愿意默默无闻,一成不变,我们缺少的只是一个展示自己的机会而已。
个人IP时代,你的名气有多大,直接决定了你能获得多大的价值。
给你一个百万IT从业者的舞台,你敢登台吗?
自打成为在线讲师,我不禁在想,没准我会是下一个IT界的PAPI酱!



我就是为了多赚点钱


工作之余我去寻找项目合作、兼职讲演,为了能赚更多的钱,实现更多的价值。
我也是个普通人,想让家人过得更好,自己活得不要太累。
所以,技术傍身,靠授业能获得更高的收入,何乐而不为?



ITGeGe在线教育社区


ITGeGe是共享经济模式下的在线教育社区,致力于“让智慧流动起来”,任一IT从业者都可以成为讲师,只要你乐意分享自己的专业技术、项目经验。ITGeGe三年内将打造10000名在线讲师,1000名年收入100W 自品牌讲师。入驻ITGeGe,其他交给我们!



二图.png



三图.png



Docker容器互联方法--篇二

绝地魔影 发表了文章 • 0 个评论 • 28546 次浏览 • 2016-03-23 16:09 • 来自相关话题

【编者的话】本文为Eddy Mavungu博士于DEIS官方博客中发布的系列文章的第二部分,Eddy博士在本篇系列文章中分享了Docker容器间互联的方法,并且做了演示。Eddy博士是DEIS公司的创始人,同时也是一位高级研究顾问。本文根据他于DEIS官方博客 ...查看全部
【编者的话】本文为Eddy Mavungu博士于DEIS官方博客中发布的系列文章的第二部分,Eddy博士在本篇系列文章中分享了Docker容器间互联的方法,并且做了演示。Eddy博士是DEIS公司的创始人,同时也是一位高级研究顾问。本文根据他于DEIS官方博客上发布的文章翻译而成。

@Container容器技术大会将于6月4日在上海光大会展中心国际大酒店举办,来自Rancher、携程、PPTV、蚂蚁金服、京东、浙江移动、海尔电器、唯品会、eBay、道富银行、麻袋理财、土豆网、阿里百川、腾讯游戏、点融网等公司的技术负责人将带来实践经验分享,5月7日之前购票只需438元,欢迎感兴趣的同学抢购。

这篇系列文章的第二部分会看一下如何连接Docker各容器。

我们在第一节谈及了Docker的bridge接口,它可以让我们连接所有在相同Docker宿主机上的容器。特别需要指出的是,我们看了三个基本并且比较早先的网络驱动技术:端口公开(port exposure),端口绑定(port binding)以及链接(linking)。

在本文,我们将来看这些更高级并且最新的基于bridge接口的使用案例。

同时,我们也会看看使用overlay技术来将不同宿主机上的Docker容器连接起来。
#用户定义的网络(User-Defined Networks)
Docker公司在2015年11月初发布了Docker 1.9.0,随之而来整合了一些令人兴奋的关于网络方面的新内容。通过这些更新,如果我们现在为了让两个容器间可以相互通信,那么只需要将他们放在同一网络或者子网中。

让我们来证明一次。

首先,来看看我们准备了哪些:
$ sudo docker network ls
NETWORK ID NAME DRIVER
362c9d3713cc bridge bridge
fbd276b0df0a singlehost bridge
591d6ac8b537 none null
ac7971601441 host host

现在,让我们来创建网络:
$ sudo docker network create backend

如果起作用了,我们的网络列表上会显示刚才新建立的网络:
$ sudo docker network ls
NETWORK ID NAME DRIVER
362c9d3713cc bridge bridge
fbd276b0df0a singlehost bridge
591d6ac8b537 none null
ac7971601441 host host
d97889cef288 backend bridge

我们可以看到在这里backend已经被bridge驱动创建出来了。这是一个桥接(bridge)网络,就像在前文的第一部分中提到的一样,它也同样适用于所有在该宿主机上的容器。

我们将会用到上一节中创建的client_img和server_img镜像。如果你还没有在你的主机上配置好他们,可以现在查阅第一节并且设置好,这并不会花费太长时间。

什么?你说你已经设置好了?太棒了。

让我们从server_img镜像中运行一个服务器容器并且通过--net选项把它放置于之前配置的backend网络中。

就像下面命令一样:
$ sudo docker run -itd --net=backend --name=server server_img /bin/bash

像之前一样,登录到该容器:
$ sudo docker attach server

如果你看不见shell提示符,按键盘方向键的上箭头。

现在让我们启动在该容器里基于Apache的HTTP服务:
$ /etc/init.d/apache2 start

到这里为止,任何位于backend网络中的容器将可以连接到我们刚才创建的Apache HTTP服务器上。

我们可以通过在另一个终端上开启一个客户端容器并且把它至于backend网络进行测试。

就像这样:
$ sudo docker run -itd --net=backend --name=client client_img /bin/bash

进入容器:
$ sudo docker attach client

同样地,如果你看不见shell提示符,按键盘方向键的上箭头。
接着运行:
$ curl server

你应该可以看见默认的HTML页面。这意味着我们配置的网络是可以正常运行的。

就像在本系列文章的第一节中提及到的一样,Docker负责设置容器名称便于解析,这就是为什么我们可以直接用curl server 这个命令而不用知晓它的IP地址。

我们可以创建多个用户定义的网络,并且可以根据应用程序的拓扑结构把这些容器放在单个或多个网络中。这是非常灵活的,特别是对于那些需要交付微服务(microservices),多租户(multitenancy)及微分段(micro-segmentation)的人员来说是非常有用的。
#多主机网络(Multi-Host Networking)
如果我们想要建立一个跨越多台主机的网络该怎么做呢?当然,自从Docker1.9.0之后,你就可以这么做了!

目前为止,我们已经使用了基于本地范围的bridge网络驱动,这意味着桥接网络是在Docker宿主机本地的。Docker现在提供了一个新的全局范围的overlay网络驱动,这意味着overlay的网络可以跨越多台Docker宿主机。并且这些Docker宿主机可以存在于不同的数据中心,甚至不同的云服务提供商中!

为了设置一个overlay网络,以下几点是必须的:

* 一台内核版本高于3.16的主机
* 关键的key-value存储(例如 etcd, ConsulApache ZooKeeper
* 集群内的主机可以保证连接到以上的key-value存储
* 每一个集群内的主机都正确配置了基于 Docker Engine的后台实例

让我们来看一个案例吧。

我将会使用multihost-local.sh脚本和Docker Machine这个命令去开启三台虚拟主机。

这个脚本是用于虚拟机的而不是用于容器的。在这之后,我们在这些虚拟机上面运行Docker命令去模拟一个Docker宿主机集群。

在运行过脚本之后,可以看到我现在有的主机清单:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM ERRORS
mhl-consul - virtualbox Running tcp://192.168.99.100:2376
mhl-demo0 - virtualbox Running tcp://192.168.99.101:2376
mhl-demo1 - virtualbox Running tcp://192.168.99.102:2376

好了,那么让我们倒退回去看下刚才发生了些什么。

这个脚本利用了Docker Machine,这意味着你必须安装它。在本篇文章中,我们安装了0.5.2版本的Docker Machine。你可以参考该版本的发行注释说明来下载并安装它。

该脚本(multihost-local.sh)使用了Docker Machine去部署三台基于VirtualBox的虚拟机并且安装并适当的配置了Docker Engine。

Docker Machine可以与很多主流虚拟化管理程序以及云服务提供商一起协助。它现在支持AWS、Digital Ocean、Google Cloud Platform、IBM Softlayer、Microsoft Azure和Hyper-V、OpenStack、Rachspace、VitrualBox、VMware Fusion®、vCloud® Air™ and vSphere®。

我们现在有了三个虚拟机:

* mhl-consul: 运行 Consul
* mhl-demo0: Docker 集群节点
* mhl-demo1: Docker 集群节点

这些Docker集群节点是被配置为协调通过VM来运行Consul,我们的key-value仓库。这也就是这些集群所涉及到的。

很酷吧,让我们再快速地往前看一看。

现在,让我们设置一个overlay网络。

首先,我们需要用一个在mhl-demo0这个VM上的终端,像这样:
$ eval $(docker-machine env mhl-demo0)

然后运行:
$ docker network create -d overlay myapp

该命令建立了一个名为myapp的跨越所有集群中主机的overlay网络。由于Docker通过key-value与该集群上的其他主机协调使得该操作变成了可能。

为了确保它正常的工作,我们可以通过终端登录到每一个集群中的VM去列出这些Docker网络。

复制下面所有的eval命令,然后用相对应的主机名去替换mhl-demo0。

然后运行:
$ docker network ls
NETWORK ID NAME DRIVER
7b9e349b2f01 host host
1f6a49cf5d40 bridge bridge
38e2eba8fbc8 none null
385a8bd92085 myapp overlay

到这里你就看到名为myapp的overlay网络了。

咱们成功啦!

但请记住:我们目前仅仅是创建了一个基于Docker 虚拟机的集群并配置了用于共享的overlay网络。我们实际上并没有创建任何Docker容器。所以让我们接着创建它们并来试一下这个overlay网络。

我们将做以下步骤:

1. 在mhl-demo0宿主机上运行默认地nginx镜像(这提供给了我们一个预先配置好的Nginx HTTP服务器)
2. 在mhl-demo1宿主机上运行默认的busybox镜像(它提供给我们一个基本的操作系统并且还包含一个类似于基于GNU的Wget工具)
3. 将两个容器添加进myapp网络
4. 测试他们之间的网络连通性

首先,让我们调出在mhl-demo0宿主机上的终端:
$ eval $(docker-machine env mhl-demo0)

然后启动nginx镜像:
$ docker run --name ng1 --net=myapp -d nginx

简而言之,我们现在有以下环境:

* 一台基于Nginx的HTTP服务器
* 该服务跑在名为ng1的容器里
* 它处在myapp网络中
* 该容器位于mhl-demo0宿主机上

让我们从其他宿主机上的另外一个容器试着去访问该环境,去验证它是可用的。

这一次调出mhl-demo1宿主机上的终端:
$ eval $(docker-machine env mhl-demo1)

然后运行:
$ docker run -it --net=myapp busybox wget -qO- ng1

以上命令其实做了以下几点:

* 从busybox镜像中创建了一个未命名的容器
* 将它添加进了myapp网络
* 运行了wget -qO- ng1命令
* 并且停止了该容器(我们在这之前是让容器运行的)

在以上的Wget命令中,ng1是我们Nginx的容器名称。Docker可以让我们使用解析到的主机名作为容器名称,甚至该容器是运行在不同的Docker宿主机上。

如果所有操作都是成功的,那么我们应该会看见以下类似的内容:






Welcome to nginx!

你看吧!我们现在拥有了一个基于多主机的容器网络。
#总结
Docker给予了诸如轻量级且独立地并能隔离的环境这样的优点。然而,要使容器对我们而言有用途,容器之间以及容器与主机网络之间要能互相通信才是至关重要的。

在这一系列文章中,我们探索了一些容器间本地互联和跨多个宿主机互联的方法。同样地,我们也聊了聊该如何在主机网络中去连接多个容器。

原文链接:Connecting Docker Containers, Part Two (翻译:薛开成)

===========================================
译者介绍
薛开成,趋势科技南京研发中心工程工具服务事业部基础架构高级工程师,负责容器仓库实施及落地。

Docker容器互联方法-篇一

绝地魔影 发表了文章 • 0 个评论 • 18801 次浏览 • 2016-03-23 15:26 • 来自相关话题

【编者的话】本文为Eddy Mavungu博士于DEIS官方博客中发布的系列文章的第一部分,Eddy博士在本篇系列文章中分享了Docker容器间互联的方法,并且做了演示。Eddy博士是DEIS公司的创始人,同时也是一位高级研究顾问。本文根据他于DEIS官方博客 ...查看全部
【编者的话】本文为Eddy Mavungu博士于DEIS官方博客中发布的系列文章的第一部分,Eddy博士在本篇系列文章中分享了Docker容器间互联的方法,并且做了演示。Eddy博士是DEIS公司的创始人,同时也是一位高级研究顾问。本文根据他于DEIS官方博客上发布的文章翻译而成。

@Container容器技术大会将于6月4日在上海光大会展中心国际大酒店举办,来自携程、PPTV、蚂蚁金服、京东、浙江移动、海尔电器、唯品会、eBay、道富银行、麻袋理财、土豆网、阿里百川、腾讯游戏、点融网等公司的技术负责人将带来实践经验分享,4月7日之前购票只需338元,欢迎感兴趣的同学抢购。

Docker容器都是独立的,互相隔离的环境。然而,它们通常只有互相通信时才能发挥作用。

虽然有许多方法可以连接容器们,可是我将并不会试着去将其全部讨论在内。但是在这一系列的方法中,我们将看看那些常用的做法。

虽然看起来是很浅显,但是这对于与Docker成天打交道的朋友来说,理解这些技术及底层的设计理念就显得非常地重要了。

理解这些主题将会:

  • 帮助开发和运维人员探索广泛的容器部署的选择。
  • 让开发和运维人员更自信的着手于微服务(microservice)架构设计。
  • 让开发和运维人员可以较好的编排更复杂的分布式应用程序。
幸运地是,大量的连接选项为容器间通信打开了更为广泛的方法,可以让我们灵活地选择一个架构并能适合任何应用程序的需求。在这篇文章中,我们将会看一下三个较为古老也是更基本的连接各容器的方法。我们会将这种知识和经验作为基石,然后在下一章节中转移到两种较新,较为简单且更强大的方法。#配置在我们展示容器间如何被连接之前,我们需要先建立一对容器作为本次的例子。第一个镜像将是来源于一个简单的Ubuntu操作系统安装。它将扮演一个客户端容器的角色。首先,我们创建该容器并连接到它。
$ sudo docker run -itd --name=client_setup ubuntu /bin/bash$ sudo docker attach client_setup
接下来,一旦有了容器内的shell程序,我们就可以运行以下命令:
$ apt-get install curl
如果你看不见shell命令提示符,点击键盘方向区的向上箭头。当容器安装完毕,执行CTRL+P和CTRL+Q命令退出该容器。紧接着我们停止并提交该容器。
$ sudo docker stop client_setup$ sudo docker commit client_setup client_img
现在我们可以使用刚才创建的名为client_img的容器了。第二个容器我们还是从之前的Ubuntu操作系统的安装上获得。但是这一次,我们将把它修改成一个运行了Apache HTTP的服务器容器。首先,我们像之前一样建立并且连接到它:
$ sudo docker run -itd --name=server_setup ubuntu /bin/bash$ sudo docker attach server_setup
然后,一旦我们可以用容器内的shell程序了,就可以能安装Apache的HTTP服务了。
$ apt-get install apache2
当容器安装完毕,执行CTRL+P和CTRL+Q命令退出该容器。现在我们停止并提交容器:
$ sudo docker stop server_setup$ sudo docker commit server_setup server_img
那么现在我们就有了两个镜像了,分别是 client_img 和 server_img。当这些设置好后,我们就可以探索多种的容器间连接的可能性了。#Docker桥接(Bridge)单个Docker容器是默认地与其他容器和外部网络隔离的。Docker提供了bridge接口,名为docker0,这其实是在Docker Engine安装时就建立好的。它通过Docker的bridge接口可以让容器间以及容器和主机之间进行通信。我们可以通过下面的命令来查看一个位于Docker宿主机上的Docker bridge:
$ ifconfig docker0
你可以看到类似如下的输出:
docker0   Link encap:Ethernet  HWaddr 02:42:a2:dc:0f:a8            inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0          inet6 addr: fe80::42:a2ff:fedc:fa8/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:1477 errors:0 dropped:0 overruns:0 frame:0          TX packets:2436 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:83901 (83.9 KB)  TX bytes:3606039 (3.6 MB)
该bridge接口在本地一个单独的Docker宿主机上运行,并且它是我们本篇文章所提及的所有三种方法背后的连接机制。在下一章节中,我们将转向overlay接口,这种接口允许把网络容器部署在多个Docker宿主机上。#端口公开(Exposing Ports)首先,让我们看下如何运行一个容器服务并且公开其80端口(HTTP)给其他容器。为了这么做,我通过expose命令去运行该容器,这是告诉Docker在运行该容器的时候让其公开特定的端口。当然,被公开的端口是可以被其他容器访问的。让我们运行server_img并且把该容器命名为server1,公开其80端口:
$ sudo docker run -itd --expose=80 --name=server1 server_img /bin/bash
接下来我们会按依次命名这些容器(server1,server2以及其他)。然后,连接到容器:
$ sudo docker attach server1
重申一遍,如果你看不见shell命令提示符,可以使用方向键的向上箭头。启动该容器内的Apache HTTP服务:
$ /etc/init.d/apache2 start
让我们来看下获得的IP地址:
$ ifconfigeth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:03            inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
那么,这样我们就有了172.17.0.3这个IP地址。让我们试一下从一个客户端的容器里去看这些信息吧。打开第二个终端。启动名称为client1的容器:
$ sudo docker run -itd --name=client1 client_img /bin/bash
进容器里看一下:
$ sudo docker attach client1
如果你看不见shell命令提示符,可以使用方向键的向上箭头。让我们来测试一下到server1的连通性:
$ curl 172.17.0.3
如果一切正常,你应该可以看见基于Apache HTTP服务的默认页面。这表明client1容器已经可以与server1容器的HTTP端口正确地建立连接了。#端口绑定(Port Binding)如果我们希望我们的HTTP服务器公开在主机网络呢,包括主机上的应用及主机网络上的其他机器?在这个方案中,我们需要去将主机端口绑定(bind)至容器端口。为了让基于Apache的HTTP服务器公开给主机所处的网络,我们需要将该容器的80端口绑定至宿主机上的8080端口。我们可以按照以下命令来这么做:
$ sudo docker run -itd -p 8080:80 --name=server2 server_img /bin/bash
在这里需要注意的是-p 8080:80选项。现在,进容器看下:
$ sudo docker attach server2
如果看不见shell的提示符,和之前一样,按方向区的向上箭头,紧接着我们启动该HTTP服务:
$ /etc/init.d/apache2 start
现在,我们可以从宿主系统去访问http://localhost:8080/,同时应该能看见基于Apache HTTP服务的默认页面。
1231233.png
任何在你主机网络内的那些机器都可以访问由你的宿主机所发布出来的8080端口。#容器链接(Linking Containers)Docker将另一种涉及到的连接各容器的方法称为链接(linking)。当你将一个容器链接到另一个容器的时候,Docker将通过一些环境变量来关联这些容器之间的信息。我们可以看一下。首先,启动该服务器容器。
$ sudo docker run -itd --name=server3 server_img /bin/bash
接着通过以下命令一样去启动客户机容器并链接至服务器容器。
$ sudo docker run -itd --link server3 --name=client3 client_img /bin/bash
请注意我们这里用了--link server3 选项。接着我们登录到客户机容器看一眼:
$ sudo docker attach client3
然后我们检查一下可用的环境变量:
$ env | grep SERVER3SERVER3_PORT_80_TCP_PROTO=tcpSERVER3_PORT=tcp://172.17.0.2:80SERVER3_PORT_80_TCP_PORT=80SERVER3_NAME=/client3/server3SERVER3_PORT_80_TCP=tcp://172.17.0.2:80SERVER3_PORT_80_TCP_ADDR=172.17.0.2
Docker同样也更新了客户端容器中的/etc/hosts 文件并且将server3作为一个本地主机指向了服务器容器。为了演示该情况,让我们运行以下命令看一看:
$ curl server3
你应该可以再一次看见那个相同的默认HTML页面了。#总结在这一系列的第一部分,我们介绍了Docker桥接(bridge)接口,它可以让我们连接同一台宿主机上的各容器。我们也聊了聊以下三种连接方法:
  • 通过端口公开(port exposure)连接
  • 将宿主机端口绑定(bind)至容器端口
  • 通过链接(link)选项去连接两个容器

在第二部分,我们将一睹隔离容器内部的用户定义网络。我们也会介绍overlay接口并且看一眼该如何在多个Docker宿主机之间去将Docker容器连接起来。它甚至可以跨越数据中心和云提供商!

原文链接:Connecting Docker Containers, Part One (翻译:薛开成)

===========================================
译者介绍
薛开成,趋势科技南京研发中心工程工具服务事业部基础架构高级工程师,负责容器仓库实施及落地。

HeheCloud集群构建指南

一个开发者 发表了文章 • 0 个评论 • 2579 次浏览 • 2016-03-03 22:15 • 来自相关话题

HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。并且帮助您轻松的部署和管理应用、快速的集成更多的服务。 1. 创建集群 1. 在控制台页面,点击 添加新集群 2. 在 ...查看全部

HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。并且帮助您轻松的部署和管理应用、快速的集成更多的服务。



1. 创建集群

1. 在控制台页面,点击 添加新集群
2. 在弹出框中输入集群名称; 您可以通过 HeheCloud 支持的云平台, 或者自己的物理机、虚拟机来搭建集群
3. 点击 创建 按钮

![截图][1]

2. 准备主机

- 操作系统:CoreOS 版本 >= 681.2.0
- 至少4GB内存(越多越好)
- `/var/lib/docker` 卷下至少40GB的硬盘空间(通常需要额外挂载云硬盘,便于以后随时扩容。可以使用我们的脚本自动分区)
- 添加的主机和集群中的其他主机在同一内网中,并且主机之间内网通畅
- 保证docker可以正常运行,docker版本建议1.7及以上
- 保证所有主机的machine-id互不相同,否则无法组建集群

# a. 阿里云
以阿里云为例
如果你希望使用阿里云 ECS 来搭建集群,请在其 购买页面 选择符合要求的主机:

![截图][2]

我们在 北京区 购买了 3 台 CoreOS ECS。在阿里云为您创建好 ECS 之后,你可以登入 ECS 控制台,查看 ECS 实例的相关信息:

![截图][3]

每个实例会分配一块私网网卡,并绑定一个私网 IP,ECS 实例之间可以通过内网互访。

接下来,我们格式化数据云盘并 mount 到 ``/var/lib/docker`` 卷下。

首先在 ECS 控制台查看数据云盘的挂载点:

![截图][4]

对于每一台 ECS 实例:

  • 通过 SSH 登录到实例并运行下面的命令格式化数据云盘
```curl -sSL http://api.hehecloud.com/v1/mount/dev/<挂载点名称> | sudo -H sh```
  • 运行 `df -lh` 命令查看 `/var/lib/docker` 是否添加成功
![][5]
  • 另外,运行 `docker info` 查看docker是否能够正常运行
  • 运行 `cat /etc/machine-id` 查看 machine-id。目前,我们批量购买的 ECS 实例的 machine-id 是相同的,这会导致无法顺利组建集群。我们需要重新生成以保证所有主机的 machine-id 互不相同:
```# 删除原有machine-idsudo rm /etc/machine-id# 重新生成machine-idsudo systemd-machine-id-setup# 重启实例sudo reboot``` 3. 添加主机回到 控制台我的集群 点击刚才创建的集群,进入 集群管理。我们要按步骤对集群进行初始化,第一步就是要向集群中添加至少三台主机:![][6]在上一节我们已经准备好了主机,因而现在我们只需要按照提示完成安装主机监控程序的操作, 即需要我们依次登录主机,执行:```curl -sSL http://get.hehecloud.com/install.sh | sudo sh -s ```安装成功后,控制台会提示主机添加成功,您可以继续添加直到成功添加三台 4. 集群初始化在向集群添加完 3 台主机后,您就可以设置集群的相关参数并构建集群环境了。在参数设置这一步中,您需要设置管理集群的安全账户和密码:![][7]点击下一步来构建集群环境:![][8]最终,集群完成初始化,我们可以通过它创建/管理应用:![][9]HeHeCloud 为您分配了 Deis Hostname,您部署的应用会处于该域名之下。例如,如果你的应用标识名为 `myapp`,那么你可以通过 `myapp.` 对应用进行访问。另外,你还可以使用 `deis` 命令行工具登录到 `Deis Endpoint`,对应用进行管理。 更多文章[list=1]
  • [使用HeheCloud快速部署一个Wordpress应用][10]
  • [使用HeheCloud一键集成SaaS服务][11]


  • [1]: http://hehe.sinacloud.net/images/create-cluster.png
    [2]: http://hehe.sinacloud.net/images/deis_aliyun.png
    [3]: http://hehe.sinacloud.net/images/aliyun-ecs.png
    [4]: http://hehe.sinacloud.net/images/aliyun-disk.png
    [5]: http://hehe.sinacloud.net/images/fomat_disk.png
    [6]: http://hehe.sinacloud.net/images/add-host.png
    [7]: http://hehe.sinacloud.net/images/config-cluster.png
    [8]: http://hehe.sinacloud.net/images/build-cluster.png
    [9]: http://hehe.sinacloud.net/images/cluster-info.png
    [10]: http://dockone.io/article/1063
    [11]: http://dockone.io/article/1069

    使用HeheCloud一键集成SaaS服务

    一个开发者 发表了文章 • 0 个评论 • 2574 次浏览 • 2016-02-28 23:29 • 来自相关话题

    HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。并且帮助您轻松的部署和管理应用、快速的集成更多的服务。 今天我们介绍如何使用 `服务集成` 功能,一键集成SaaS服务:`cSphere` 和 `D ...查看全部

    HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。并且帮助您轻松的部署和管理应用、快速的集成更多的服务。




    今天我们介绍如何使用 `服务集成` 功能,一键集成SaaS服务:`cSphere` 和 `Datadog`

    * cSphere: 国内首个Docker管理平台,cSphere将运行在各种基础设施中的Docker主机及其容器聚合到中心的Controller提供全局的WEB界面、图表和API、和自动化监控报警。https://csphere.cn/
    > * Datadog: 一站式云端性能监控平台。https://www.datadoghq.com/



    开始集成之前请确保您已经按照引导添加主机并完成集群的初始化

    cSphere

    1. 点击左侧导航的 `服务集成`,选择 `SaaS服务` 标签中的 `cSphere`
    2. 直接点击 `开启` 按钮,安装并运行 `cSphere`

    ![][1]

    稍等片刻,等待服务状态变为 `运行中`,安装过程就这么简单。

    你可以直接访问 `CONTROLLER_URL` 进入cSphere的面板

    ![][2]

    进入cSphere面板,初始化cSphere账号后,您就可以管理集群内所有主机了。

    ![][3]

    ![][4]


    Datadog

    同样简单:
    1. 点击左侧导航的 `服务集成`,选择 `SaaS服务` 标签中的 `Datadog`
    2. 点击 `开启` 按钮,输入您在`Datadog`账号中创建的`API Key`

    ![][5]

    稍等片刻,等待服务状态变为 `运行中`,安装过程同样这么简单。

    ![][6]

    现在我们就可以登录`Datadog`控制台查看集群内所有主机的监控信息和性能指标了

    ![][7]

    ![][8]


    [1]: http://sinacloud.net/hehe/images/services/csphere-1.png
    [2]: http://sinacloud.net/hehe/images/services/csphere-2.png
    [3]: http://sinacloud.net/hehe/images/services/csphere-3.png
    [4]: http://sinacloud.net/hehe/images/services/csphere-4.png
    [5]: http://sinacloud.net/hehe/images/datadog-2.png
    [6]: http://sinacloud.net/hehe/images/datadog-1.png
    [7]: http://sinacloud.net/hehe/images/datadog-3.png
    [8]: http://sinacloud.net/hehe/images/datadog-4.png





    使用HeheCloud快速部署一个Wordpress应用

    一个开发者 发表了文章 • 0 个评论 • 2776 次浏览 • 2016-02-26 18:27 • 来自相关话题

    使用 HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。 > 并且帮助您轻松的部署和管理应用、快速的集成更多的服务。 您可以使用三种不同的方式来构建应用: > H ...查看全部

    使用 HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。
    > 并且帮助您轻松的部署和管理应用、快速的集成更多的服务。

    您可以使用三种不同的方式来构建应用:

    > Heroku Buildpack:* 适用于 Heroku 风格的应用。
    > Dockerfile:* 基于你所选择的基础 OS,可定制轻便的应用运行环境。
    > Docker镜像:* 有利于简化持续集成 / 持续交付的构建流程。

    这里我们使用`Docker镜像`方式为例部署一个完整的`Wordpress`,讲解如何部署一个完整的应用。

    开始以下步骤之前请确保您已经按照引导添加主机并完成集群的初始化

    创建MySQL服务

    点击左侧导航的`服务集成`,选择`MySQL`

    services-1.png

    然后点击 `开启` 按钮,来安装并开启MySQL服务
    services-2.png

    稍等片刻,等待服务状态变为 `运行中`,并且等待配置信息加载完成
    services-3.png

    如果您需要在线管理MySQL的话, 可以开启 `附加服务` 中的 `phpMyAdmin`
    services-4.png

    创建应用

    首先您需要按照 `使用指南` 安装Deis客户端,并使用Deis客户端登录您构建集群时设置的安全账号

    这里,我们借用 DaoCloud 提供的国内加速的 Wordpress Docker 镜像:
    daocloud.io/daocloud/dao-wordpress:latest

    打开命令行窗口,运行命令:

    创建一个目录 `blog`,并进入目录下:
    $ mkdir blog && cd blog

    初始化Git,并且使用 `deis` 创建一个名为 `blog` 的应用:
    $ git init
    $ deis create blog

    我们查看镜像的说明,得到需要设置的环境变量:
    > WORDPRESS_DB_HOST 数据库主机地址( MySQL服务的 IP 和 端口,例如:`:3306` )
    > WORDPRESS_DB_USER 数据库用户名( 默认为 root )
    > WORDPRESS_DB_PASSWORD 数据库密码( 连接数据库的密码 )

    将我们刚才开启的MySQL服务的配置信息写入应用的环境变量:
    deis config:set \
    WORDPRESS_DB_HOST="10.171.135.123:3306" \
    WORDPRESS_DB_USER="root" \
    WORDPRESS_DB_PASSWORD="0pztkvjVGQaeeNsfJUDx"

    最后,我们直接通过镜像部署应用:
    deis pull daocloud.io/daocloud/dao-wordpress:latest

    稍等片刻,大功告成!

    点击左侧导航的 `我的应用` 并查看应用信息、容器信息以及访问日志等:
    services-5.png

    services-6.png

    services-6-1.png

    services-6-2.png

    最后看一下我们部署的博客:
    services-8.png

    services-9.png

    绑定域名

    此外,如果您想使用自定义域名,可以运行:
    deis domains:add hehe123.com

    命令运行完毕,您就可以把域名解析到您的主机上了。

    > 更多高级用法请查看:官方使用指南 和 Deis中文指南

    完整版本Deis中文指南,送给需要的朋友

    一个开发者 发表了文章 • 2 个评论 • 3372 次浏览 • 2016-02-01 15:54 • 来自相关话题

    完整版本Deis中文指南:http://deis.heheapp.com/
    完整版本Deis中文指南:http://deis.heheapp.com/

    请问现在Deis的主要应用场景有哪些?

    xds2000 回复了问题 • 5 人关注 • 2 个回复 • 3596 次浏览 • 2015-09-28 11:17 • 来自相关话题

    Engine Yard的Deis平台推出基于Docker的PaaS商业支持

    夕口夕 发表了文章 • 0 个评论 • 4316 次浏览 • 2015-07-02 12:07 • 来自相关话题

    【编者的话】Engine Yard今年四月份收购Deis时,表示将会就其提供商业支持,现在,终于来了。 今年早些时候,云平台服务商[Engine Yard收购基于Docker的开源PaaS平台Deis][1]。一直以来,Engine ...查看全部
    【编者的话】Engine Yard今年四月份收购Deis时,表示将会就其提供商业支持,现在,终于来了。

    今年早些时候,云平台服务商[Engine Yard收购基于Docker的开源PaaS平台Deis][1]。一直以来,Engine Yard因其提供的支持服务著称,今后,该公司还将向商家提供“购买Deis支持”的选项。

    [Deis][2]是一个基于Docker和CoreOS的平台,旨在为开发者提供一个本质上是私人托管的Heroku平台。对于非Docker用户,它甚至还提供提供了运行Ruby、Python、Node.js、Java、PHP、Perl和Go等应用的Heroku buildpacks。因为Deis是基于Docker的,它具有高度的扩展性和便携性,用户可以借助Dokerfile和Docker镜像快速部署任何应用。

    目前,Mozilla和Coinbase都是Deis的用户。

    新的支持服务提供两种版本:标准版和高级版。标准版在正常工作时间提供web和电子邮件支持,高级版则提供7*24的全天候电话支持并保证30分钟的响应时间。

    此外,Engine Yard还将为现有的自定义平台提供安装支持,培训与帮助。

    Deis的创始人和Engine Yard的CTO Gabe Monroy说,Deis所提供的开源产品和公司的商业客户所得到的是完全一致的。Deis所做的,只是为有偿服务推出了一个新的图形界面,这样一来,只需点击两下鼠标,便可以启动一个AWS上的Deis集群。

    Monroy说:“Docker已经改变了我们构建、发布、运行应用的方式。但有些公司在使Docker适应生产工作负载的过程中遇到了棘手问题。大型社区的使用者和贡献者们见证了Deis已经成功帮助许多公司将Docker投入生产。有了Deis PRO——最简单的运行Deis 集群的方式,在分布式系统中管理Docker便不再是难事。”

    Monroy表示,相较于同类以Docker为中心提供PaaS服务的公司(如Cloud Foundry),他们公司的优势在于,产品是在Docker推出后开发的,也就是说从一开始,Docker就处于其产品核心的位置。

    原文链接:Engine Yard’s Deis Launches Commercial Support For Its Docker-Based PaaS(翻译:马远征)


    [1]: http://dockone.io/article/310
    [2]: http://dockone.io/article/124
    [3]: http://techcrunch.com/2015/06/30/engine-yard-launches-commercial-support-for-deis-docker-based-paas/
    条新动态, 点击查看
    zhen

    zhen 回答了问题 • 2015-01-15 16:11 • 4 个回复 不感兴趣

    AWS上运行Deis, register不能正常工作,求解?

    赞同来自:

    已解决,打开端口限制即可。
    已解决,打开端口限制即可。

    Deis正式加入微软

    李颖杰 发表了文章 • 0 个评论 • 2081 次浏览 • 2017-04-11 08:21 • 来自相关话题

    容器技术正在迅速改变团队构建、打包、交付以及管理应用程序的具体方式。强大而开放的容器编排方案,配合新型应用程序架构,正为各类组织机构带来前所未有的灵活性与多样性选项。从容器技术诞生之初到Kubernetes的强势崛起,Deis一直专注于构建并贡献多项开源技术成 ...查看全部
    容器技术正在迅速改变团队构建、打包、交付以及管理应用程序的具体方式。强大而开放的容器编排方案,配合新型应用程序架构,正为各类组织机构带来前所未有的灵活性与多样性选项。从容器技术诞生之初到Kubernetes的强势崛起,Deis一直专注于构建并贡献多项开源技术成果,旨在帮助开发者与运营者得以更为轻松地构建及运行应用程序。

    【深圳站|3天烧脑式Kubernetes训练营】培训内容包括:Kubernetes概述和架构、部署和核心机制分析、进阶篇——Kubernetes调工作原理及源码分析等。

    今天,我们高兴地宣布,Deis将正式加入微软公司,并将继续推动自身使命——即不断提升容器技术的易用性。微软拥有悠久的开发者工具与技术方案构建历史。凭借着微软方面云业务的领导地位与对开源软件的大力支持及配合,我们对于微软技术在帮助定义、形成以及构建新型云原生应用程序举措方面的深度与广度感到钦佩不已。我们期待着微软Azure能够成为运行容器化工作负载的最佳平台。

    我们很荣幸能够通过微软庞大的用户群体以及一系列外部贡献者进一步提升自身体验水平并发布更多开源项目。多年以来,我们一直努力扮演开放、可靠且值得信赖的开源维护者角色。立足于微软这一全新大家庭,我们必将不断拓展自身贡献能力。我们将继续为Workflow、Helm以及Steward的发展贡献力量,同时继续深入参与到Kubernetes技术社区中来。微软公司的开源基础设施发展前景必将一片光明。

    在这里,我们还要向客户、社区成员、合作伙伴、家人及朋友致以诚挚的谢意。 感谢大家发布的GitHub问题、pull请求、在我们#community Slack频道中的帮助、bug修复以及经验共享。我们将在这条道路上继续保持不懈努力。

    欲了解更多与这一振奋人心的消息相关之细节信息,请点击此处阅读Scott Guthrie发布的博文。

    原文链接:Deis to Join Microsoft

    Engine Yard的Deis平台推出基于Docker的PaaS商业支持

    夕口夕 发表了文章 • 0 个评论 • 4316 次浏览 • 2015-07-02 12:07 • 来自相关话题

    【编者的话】Engine Yard今年四月份收购Deis时,表示将会就其提供商业支持,现在,终于来了。 今年早些时候,云平台服务商[Engine Yard收购基于Docker的开源PaaS平台Deis][1]。一直以来,Engine ...查看全部
    【编者的话】Engine Yard今年四月份收购Deis时,表示将会就其提供商业支持,现在,终于来了。

    今年早些时候,云平台服务商[Engine Yard收购基于Docker的开源PaaS平台Deis][1]。一直以来,Engine Yard因其提供的支持服务著称,今后,该公司还将向商家提供“购买Deis支持”的选项。

    [Deis][2]是一个基于Docker和CoreOS的平台,旨在为开发者提供一个本质上是私人托管的Heroku平台。对于非Docker用户,它甚至还提供提供了运行Ruby、Python、Node.js、Java、PHP、Perl和Go等应用的Heroku buildpacks。因为Deis是基于Docker的,它具有高度的扩展性和便携性,用户可以借助Dokerfile和Docker镜像快速部署任何应用。

    目前,Mozilla和Coinbase都是Deis的用户。

    新的支持服务提供两种版本:标准版和高级版。标准版在正常工作时间提供web和电子邮件支持,高级版则提供7*24的全天候电话支持并保证30分钟的响应时间。

    此外,Engine Yard还将为现有的自定义平台提供安装支持,培训与帮助。

    Deis的创始人和Engine Yard的CTO Gabe Monroy说,Deis所提供的开源产品和公司的商业客户所得到的是完全一致的。Deis所做的,只是为有偿服务推出了一个新的图形界面,这样一来,只需点击两下鼠标,便可以启动一个AWS上的Deis集群。

    Monroy说:“Docker已经改变了我们构建、发布、运行应用的方式。但有些公司在使Docker适应生产工作负载的过程中遇到了棘手问题。大型社区的使用者和贡献者们见证了Deis已经成功帮助许多公司将Docker投入生产。有了Deis PRO——最简单的运行Deis 集群的方式,在分布式系统中管理Docker便不再是难事。”

    Monroy表示,相较于同类以Docker为中心提供PaaS服务的公司(如Cloud Foundry),他们公司的优势在于,产品是在Docker推出后开发的,也就是说从一开始,Docker就处于其产品核心的位置。

    原文链接:Engine Yard’s Deis Launches Commercial Support For Its Docker-Based PaaS(翻译:马远征)


    [1]: http://dockone.io/article/310
    [2]: http://dockone.io/article/124
    [3]: http://techcrunch.com/2015/06/30/engine-yard-launches-commercial-support-for-deis-docker-based-paas/

    Engine Yard收购基于Docker的开源PaaS平台Deis

    崔婧雯 发表了文章 • 1 个评论 • 4883 次浏览 • 2015-04-15 13:13 • 来自相关话题

    【编者的话】 PaaS领域的公司最近频繁合并,今天Engine Yard又宣布收购了OpDemand,其旗下的开源PaaS工具Deis还会继续保持开源。 Engine Yard,一家提供平台即服务(PaaS)云来帮助开发人员构建并运行 ...查看全部
    【编者的话】 PaaS领域的公司最近频繁合并,今天Engine Yard又宣布收购了OpDemand,其旗下的开源PaaS工具Deis还会继续保持开源。

    Engine Yard,一家提供平台即服务(PaaS)云来帮助开发人员构建并运行应用的创业公司,今天宣布收购OpDemand,OpDemand是一家创建了开源PaaS平台Deis的创业公司。

    “加入Engine Yard之后,Deis会继续作为开源项目在社区里发展壮大。Engine Yard会帮助该项目的发展,Deis仍然会是部署和管理生产环境里分布式应用的最佳工具。” OpDemand 首席技术官,Deis创始人Gabriel Monroy在博客里说。

    Deis基于Linux容器技术,这已经成为如今开发的热点区域。可以在Docker容器里运行的应用,也可以在Deis上运行。

    PaaS领域的公司最近频繁合并,比如,CenturyLink收购了AppFog。Docker,曾经称为dotCloud,离开了PaaS领域进军容器市场而声名鹊起。

    对于想要使用开源的Deis代码在他们自己的数据中心运行自己的PaaS平台的开发人员,Engine Yard不是直接收取额外费用,而是会为其提供商业支持。

    Engine Yard,总部在San Francisco,2006年创建。

    OpDemand创建于2011年,总部在Boulder,Colorado。投资人包括Zor Gorelov。

    Monroy的博客上有这次收购的更多内容。

    原文链接:Engine Yard buys OpDemand, the startup behind open-source cloud platform Deis(翻译:崔婧雯 校对:李颖杰)
    ===========================
    译者介绍
    崔婧雯,现就职于IBM,资深软件工程师,负责WebSphere业务流程管理软件的系统测试。曾在VMware担任过桌面虚拟化产品的测试工作。对虚拟化,中间件技术有浓厚的兴趣。

    Deis官方文档汇总

    李颖杰 发表了文章 • 1 个评论 • 24332 次浏览 • 2015-01-05 11:42 • 来自相关话题

    Deis是一个基于Docker和CoreOS的开源PaaS平台,旨在让部署和管理服务器上的应用变得轻松容易。目前Deis 1.0正式版本已经发布(最新版本是1.1),也就是说开发者现在可以在生产环境中使用该系统。当然,Deis并不是唯一的基于Docker的Pa ...查看全部
    Deis是一个基于Docker和CoreOS的开源PaaS平台,旨在让部署和管理服务器上的应用变得轻松容易。目前Deis 1.0正式版本已经发布(最新版本是1.1),也就是说开发者现在可以在生产环境中使用该系统。当然,Deis并不是唯一的基于Docker的PaaS,同类型的PaaS还有Flynn

    11月底,DockerOne组织翻译了Deis的官方文档,旨在帮助国内开发者更快的了解Deis。接下来,我们也将联合开发者一起搭建Deis平台,供开发者参考测试,同时,搭建过程中遇到的问题以及搭建经验我们也会总结发到DockerOne上,敬请关注。感兴趣的开发者可以加入我们的QQ群: 255430713。

    Deis文档的撰写者母语并非英语,所以我们的译者翻译起来也非常困难,阅读过程中有拗口或者难以理解的地方敬请指正,我们定会即时修复,完美是一种态度。

    非常感谢参与翻译的译者,张逸仙、梁晓勇、叶可强、钟最龙以及参与审校的郭蕾和肖德时,你们的不懈努力与坚持让我感受到社区的力量,让我更确信做这件事情的价值。

    =============更新====================
    得知我们翻译Deis系列文档后,国内云服务提供商首都在线为我们提供了几台云主机,我们组织社区安装了Deis(如果想安装或者体验,请加我们的QQ群),并把安装过程中遇到的问题以及安装步骤进行了整理,具体如下:

      []Deis安装文档(一)准备[/][]Deis安装文档(二)安装CoreOS集群[/][]Deis安装文档(三)安装Deis平台[/][]Deis安装文档(四)Deis客户端使用[/]

    以下是Deis系列文档的目录,最后更新时间:2015年1月5日。

    1. 了解Deis
    1.1 基本概念
    1.2 架构
    1.3 组件
    2. 安装Deis
    2.2 快速开始
    2.3 系统需求
    2.4 亚马逊AWS
    2.5 DigitalOcean
    2.6 Google Compute Engine
    2.7 Rackspace
    2.8 Vagrant
    2.9 裸机
    2.10 安装deisctl
    2.11 安装Deis平台
    3. 使用Deis
    3.1 安装客户端
    3.2 注册用户
    3.3 部署应用程序
    3.4 使用 Buildpacks
    3.5 使用 Dockerfiles
    3.6 使用 Docker 镜像
    3.7 配置一个应用程序
    3.8 管理应用程序
    4. 管理Deis
    4.1 添加和删除主机
    4.2 备份和还原数据
    4.3 配置dns
    4.4 配置负载均衡
    4.5 操作型任务
    4.6 安全考虑
    4.7 平台日志
    4.8 平台监控
    4.9 TLS端点
    4.10 升级Deis
    5. Deis故障排查
    6. 定制Deis
    6.1 定制 builder
    6.2 定制 cache
    6.3 定制 controller
    6.4 定制 database
    6.5 定制 logger
    6.6 定制 registry
    6.7 定制 router
    6.8 定制 store-daemon
    6.9 定制 store-gateway
    6.10 定制 store-metadata
    6.11 store-monitor
    7. 贡献
    7.1 贡献者概述
    7.2 在 Deis 上 Hacking
    7.3 测试 Deis
    7.4 PR 清单

    【Deis文档】Deis的组件

    DockOne 发表了文章 • 0 个评论 • 4307 次浏览 • 2014-11-20 20:24 • 来自相关话题

    注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。 Deis包含很多的组件,这些组件一起组成一个分布式的PaaS。每一个Deis的组件都可以以一个容器或者一组容器的方式部署。 几个组件。 控制器组 ...查看全部
    注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

    Deis包含很多的组件,这些组件一起组成一个分布式的PaaS。每一个Deis的组件都可以以一个容器或者一组容器的方式部署。
    几个组件。
    控制器组件(Controller)
    ---------
    控制器组件是一个HTTP API服务器。Deis命令行客户端可以与此组件交互。
    数据库组件(Database)
    --------
    数据库组件是一个PostgreSQL服务器,用来持久化平台状态。备份和WAL日志会被推送到Store组件
    缓存组件(Cache)
    -------
    缓存组件是一个Redis实例,在controller和registry中会被使用到。
    Builder
    ---------
    Builder使用Git服务器来处理应用的构建。构建步骤为:
      []接受来自于SSH的`git push`请求[/][]通过SSH的密钥验证用户[/][]授权用户Git仓库的写权限[/][]根据更新的Git仓库构建一个新的Docker镜像[/][]将最新的配置添加到最终的Docker镜像[/][]将镜像推送到平台的注册中心[/][]在控制器上创建一个新的发行版本[/]
    一旦新的发行版本生成,新的容器会在平台上自动的进行部署。
    Registry
    -----
    Registry保存Docker镜像。镜像的数据保存在Store中。
    Logspout
    --------
    Logspount组件是一个自定义化的progrium's logspount,它可以运行在CoreOS集群的主机中,并从运行的容器中收集日志,最后再将日志发送到日志组件
    Logger
    -----
    Logger组件其实是一个syslog服务器,它可以用来收集来自Logspout的日志。这些数据可以通过控制组件查询。
    发布器(Publisher)
    -----
    发布器组件是一个使用Go语言编写的微服务,可以将容器发布到etcd,并暴露给平台的路由器(Router)。
    路由器(Router)
    -----
    路由组件使用Nginx将流量路由到应用容器。
    Store(存储)
    --------
    存储组件使用Ceph来保存需要存储状态的Deis组件,包括RegistryDatabaseLogger

    【Deis文档】Deis的架构

    DockOne 发表了文章 • 0 个评论 • 5274 次浏览 • 2014-11-20 20:22 • 来自相关话题

    注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。 Deis使用面向服务的架构,架构中的组件包括控制层(Control Plane)、数据层(Data Plane)和网状路由(Router Mesh)。 架构 ...查看全部
    注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

    Deis使用面向服务的架构,架构中的组件包括控制层(Control Plane)、数据层(Data Plane)和网状路由(Router Mesh)。
    架构图
    -------

    管理员使用Deisctl API与集群的控制层、数据层和网状路由进行交互。
    而平台的用户(开发者)通过Deis API与控制层进行交互。
    控制层通过调度器将任务发送到数据层。网状路由用来路由请求到控制层和数据层。因为网状路由与外网连接,所以它的前端一般是负载均衡器。
    控制层
    -------

    控制层负责整个平台的管理功能。控制层的组件(蓝色的部分)全部由Docker容器实现。
    存储(Store)组件包含一些更小的组件。这些小的组件运行着容器化Ceph集群,Ceph集群可以为控制层的组件提供用于存储blob的API和POSIX文件系统API。具体组件如下:
      []Registry - 一个Docker Registry,用来保存镜像和配置数据[/][]Database - 用来保存平台的状态的Postgres数据库[/][]日志- 一个syslog日志服务器,它会收集数据层的日志[/]
    终端用户主要通过控制器组件(Controller)暴露的HTTP API来与控制器组件交互。用户也可以通过`git push`与Builder进行交互。数据层-------数据层是用户容器(蓝色的部分)以用户身份运行的地方。平台调度器负责将容器发布到数据层的主机上。Deis也要求一些轻量级的组件运行在这些主机上:拓扑结构
    ---
    对于小规模的部署你可以在三个服务器上运行整个平台,包括控制层、数据层和网状路由。
    对于大规模的部署,你可以将控制层和网状路由分割开来,然后将数据层扩展到任意多的服务器。

    【Deis文档】Deis的基本概念

    DockOne 发表了文章 • 0 个评论 • 5926 次浏览 • 2014-11-20 20:17 • 来自相关话题

    注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。 Deis是一个轻量级的应用程序平台,用来在CoreOS集群中以Docker容器的方式部署并扩展十二要素应用程序(中文资料)。 十二要素(Twelve-Fac ...查看全部
    注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

    Deis是一个轻量级的应用程序平台,用来在CoreOS集群中以Docker容器的方式部署并扩展十二要素应用程序中文资料)。
    十二要素(Twelve-Factor)
    ----------------------
    十二要素应用程序是一套方法论,用来指导如何构建现代的、可扩展的分布式应用程序。
    我们觉得它集合了很多的关于软件即服务(software-as-a-service)的经验和智慧,特别是在Heroku的平台上。
    Deis遵循十二要素应用程序的方法论和最佳实践来设计运行应用程序。
    Docker
    ------
    Docker是一个开源项目,通过一个轻量级、可移植、可独立运行的容器来打包、交付并运行应用程序。
    Deis能把你的应用组装(curates)成Docker的镜像,然后通过Docker容器的方式在集群上发布。
    (Deis自身也是一系列的互相写协作的Docker容器。)
    CoreOS
    ------
    CoreOS是一个新的、精简的Linux发行版,其架构专为运行现代的、容器式程序栈而设计。
    Deis运行在CoreOS上,并部署到任何地方 - 公有云、私有云、裸机(bare metal),甚至是你的工作站。
    CoreOS能让Deis高弹性(high resilience)、规模化的部署应用或者服务,并且操作简单。
    应用
    ---
    Deis是围绕着应用的概念而设计的。应用存在集群上,并且使用容器来处理请求。
    开发者使用应用来推送代码、更改配置、增加进程数、查看日志、运行管理命令和其他很多事情。
    构建、发布、运行(Build, Release, Run)
    -----------------------------------

    # 构建阶段
    Builder组件处理git push请求并且在临时的Docker容器内构建应用并生成一个新的Docker镜像(image)。
    # 发布阶段
    在发布阶段,一个Build和配置结合起来创建出一个新的数字型的发行版本(release)。紧接着这个发行版本会被推送到Docker registry以便稍后执行。当一个新的build被创建或者配置发生改变时,都会触发构建新的发行版本,这样回滚代码或配置更改都会变的很容易。
    # 运行阶段
    在运行阶段,容器会被分派到调度器(scheduler)并且更新相应的路由。调度器负责将容器发布到主机上,并且在保证它们在集群上的均衡。容器一旦处于健康状态koi会被推送到路由组件。旧的容器只有在新的容器上线并且开始处理请求后才会被收起来会以保证零停机部署。
    备份服务
    -------
    Deis把数据库、缓存、存储、消息系统以及其它后端服务当作附加资源,以符合十二要素应用程序的最佳实践。
    应用通过使用环境变量附加后端服务。因为应用与后端服务之间没有耦合,所以应用可以任意独立的进行扩展,与由其它应用提供的服务通信,或者切换为外部服务以及第三方提供的服务。

    请问现在Deis的主要应用场景有哪些?

    回复

    xds2000 回复了问题 • 5 人关注 • 2 个回复 • 3596 次浏览 • 2015-09-28 11:17 • 来自相关话题

    AWS上运行Deis, register不能正常工作,求解?

    回复

    zhen 回复了问题 • 4 人关注 • 4 个回复 • 5123 次浏览 • 2015-01-17 11:12 • 来自相关话题

    CoreOS集群三台机器同时死掉的情况下,如何重启Deis?

    回复

    wiselyman 回复了问题 • 3 人关注 • 2 个回复 • 4848 次浏览 • 2014-12-23 11:00 • 来自相关话题

    Deis正式加入微软

    李颖杰 发表了文章 • 0 个评论 • 2081 次浏览 • 2017-04-11 08:21 • 来自相关话题

    容器技术正在迅速改变团队构建、打包、交付以及管理应用程序的具体方式。强大而开放的容器编排方案,配合新型应用程序架构,正为各类组织机构带来前所未有的灵活性与多样性选项。从容器技术诞生之初到Kubernetes的强势崛起,Deis一直专注于构建并贡献多项开源技术成 ...查看全部
    容器技术正在迅速改变团队构建、打包、交付以及管理应用程序的具体方式。强大而开放的容器编排方案,配合新型应用程序架构,正为各类组织机构带来前所未有的灵活性与多样性选项。从容器技术诞生之初到Kubernetes的强势崛起,Deis一直专注于构建并贡献多项开源技术成果,旨在帮助开发者与运营者得以更为轻松地构建及运行应用程序。

    【深圳站|3天烧脑式Kubernetes训练营】培训内容包括:Kubernetes概述和架构、部署和核心机制分析、进阶篇——Kubernetes调工作原理及源码分析等。

    今天,我们高兴地宣布,Deis将正式加入微软公司,并将继续推动自身使命——即不断提升容器技术的易用性。微软拥有悠久的开发者工具与技术方案构建历史。凭借着微软方面云业务的领导地位与对开源软件的大力支持及配合,我们对于微软技术在帮助定义、形成以及构建新型云原生应用程序举措方面的深度与广度感到钦佩不已。我们期待着微软Azure能够成为运行容器化工作负载的最佳平台。

    我们很荣幸能够通过微软庞大的用户群体以及一系列外部贡献者进一步提升自身体验水平并发布更多开源项目。多年以来,我们一直努力扮演开放、可靠且值得信赖的开源维护者角色。立足于微软这一全新大家庭,我们必将不断拓展自身贡献能力。我们将继续为Workflow、Helm以及Steward的发展贡献力量,同时继续深入参与到Kubernetes技术社区中来。微软公司的开源基础设施发展前景必将一片光明。

    在这里,我们还要向客户、社区成员、合作伙伴、家人及朋友致以诚挚的谢意。 感谢大家发布的GitHub问题、pull请求、在我们#community Slack频道中的帮助、bug修复以及经验共享。我们将在这条道路上继续保持不懈努力。

    欲了解更多与这一振奋人心的消息相关之细节信息,请点击此处阅读Scott Guthrie发布的博文。

    原文链接:Deis to Join Microsoft

    一个深度IT从业者的自白

    ITGeGe 发表了文章 • 2 个评论 • 2884 次浏览 • 2016-05-23 19:16 • 来自相关话题

    最近一直在想,做了这么多年IT,最终要做成什么样子?是继续钻研代码,誓把技术坐穿,成为顶尖程序员; > 还是转做管理,尝试统筹和调度,跟认识的不认识的、喜欢的不喜欢的人推杯换盏? > 可惜,这两种都不是我想要的,我不想做一个孤独的程序猿 ...查看全部

    最近一直在想,做了这么多年IT,最终要做成什么样子?是继续钻研代码,誓把技术坐穿,成为顶尖程序员;
    > 还是转做管理,尝试统筹和调度,跟认识的不认识的、喜欢的不喜欢的人推杯换盏?
    > 可惜,这两种都不是我想要的,我不想做一个孤独的程序猿也不想劳心做管理,我只想在钻研技术的间隙里还能做点其他有意义的事。
    >
    > 既不离开技术,又比死守技术有趣的多;分享技术经验,成为自品牌名师无疑是最好的选择!





    交朋友的重要性

    有人问我,成功的最主要条件是什么?技术?NO,资质?NO,阅历?NO。
    是时势,是平台,是圈子!
    时势造英雄,一定要顺势而为,千万不要逆势而行,不然你会死的很惨。
    成功不是靠一个人的默默努力,而是一群人的帮助和参与。
    给你最权威最专业的IT从业者圈子,拓展自己的人脉,换你,你来不来?


    头图.jpg



    能不能不加班


    一入IT深似海,从此下班是路人。
    刚入职那会我拼命工作是因为新人需要磨练;7X12加班加点是因为升职加薪的压力;单身时吃住公司是因为一人吃饱全家不饿没有后顾之忧;
    现在呢?日益隆起的肚子,越来越差的健康状况,看不到头的职业前景,午夜回家的灯光和温热的饭菜......
    三尺办公桌不再是我的舞台,镜头前的自己才是我想要的样子。可以自由的支配时间,给家人和朋友更多的陪伴,谁说IT男就得苦逼兮兮的加班!?



    IT界的网红,不小心就出名了


    没有人愿意默默无闻,一成不变,我们缺少的只是一个展示自己的机会而已。
    个人IP时代,你的名气有多大,直接决定了你能获得多大的价值。
    给你一个百万IT从业者的舞台,你敢登台吗?
    自打成为在线讲师,我不禁在想,没准我会是下一个IT界的PAPI酱!



    我就是为了多赚点钱


    工作之余我去寻找项目合作、兼职讲演,为了能赚更多的钱,实现更多的价值。
    我也是个普通人,想让家人过得更好,自己活得不要太累。
    所以,技术傍身,靠授业能获得更高的收入,何乐而不为?



    ITGeGe在线教育社区


    ITGeGe是共享经济模式下的在线教育社区,致力于“让智慧流动起来”,任一IT从业者都可以成为讲师,只要你乐意分享自己的专业技术、项目经验。ITGeGe三年内将打造10000名在线讲师,1000名年收入100W 自品牌讲师。入驻ITGeGe,其他交给我们!



    二图.png



    三图.png



    Docker容器互联方法--篇二

    绝地魔影 发表了文章 • 0 个评论 • 28546 次浏览 • 2016-03-23 16:09 • 来自相关话题

    【编者的话】本文为Eddy Mavungu博士于DEIS官方博客中发布的系列文章的第二部分,Eddy博士在本篇系列文章中分享了Docker容器间互联的方法,并且做了演示。Eddy博士是DEIS公司的创始人,同时也是一位高级研究顾问。本文根据他于DEIS官方博客 ...查看全部
    【编者的话】本文为Eddy Mavungu博士于DEIS官方博客中发布的系列文章的第二部分,Eddy博士在本篇系列文章中分享了Docker容器间互联的方法,并且做了演示。Eddy博士是DEIS公司的创始人,同时也是一位高级研究顾问。本文根据他于DEIS官方博客上发布的文章翻译而成。

    @Container容器技术大会将于6月4日在上海光大会展中心国际大酒店举办,来自Rancher、携程、PPTV、蚂蚁金服、京东、浙江移动、海尔电器、唯品会、eBay、道富银行、麻袋理财、土豆网、阿里百川、腾讯游戏、点融网等公司的技术负责人将带来实践经验分享,5月7日之前购票只需438元,欢迎感兴趣的同学抢购。

    这篇系列文章的第二部分会看一下如何连接Docker各容器。

    我们在第一节谈及了Docker的bridge接口,它可以让我们连接所有在相同Docker宿主机上的容器。特别需要指出的是,我们看了三个基本并且比较早先的网络驱动技术:端口公开(port exposure),端口绑定(port binding)以及链接(linking)。

    在本文,我们将来看这些更高级并且最新的基于bridge接口的使用案例。

    同时,我们也会看看使用overlay技术来将不同宿主机上的Docker容器连接起来。
    #用户定义的网络(User-Defined Networks)
    Docker公司在2015年11月初发布了Docker 1.9.0,随之而来整合了一些令人兴奋的关于网络方面的新内容。通过这些更新,如果我们现在为了让两个容器间可以相互通信,那么只需要将他们放在同一网络或者子网中。

    让我们来证明一次。

    首先,来看看我们准备了哪些:
    $ sudo docker network ls
    NETWORK ID NAME DRIVER
    362c9d3713cc bridge bridge
    fbd276b0df0a singlehost bridge
    591d6ac8b537 none null
    ac7971601441 host host

    现在,让我们来创建网络:
    $ sudo docker network create backend

    如果起作用了,我们的网络列表上会显示刚才新建立的网络:
    $ sudo docker network ls
    NETWORK ID NAME DRIVER
    362c9d3713cc bridge bridge
    fbd276b0df0a singlehost bridge
    591d6ac8b537 none null
    ac7971601441 host host
    d97889cef288 backend bridge

    我们可以看到在这里backend已经被bridge驱动创建出来了。这是一个桥接(bridge)网络,就像在前文的第一部分中提到的一样,它也同样适用于所有在该宿主机上的容器。

    我们将会用到上一节中创建的client_img和server_img镜像。如果你还没有在你的主机上配置好他们,可以现在查阅第一节并且设置好,这并不会花费太长时间。

    什么?你说你已经设置好了?太棒了。

    让我们从server_img镜像中运行一个服务器容器并且通过--net选项把它放置于之前配置的backend网络中。

    就像下面命令一样:
    $ sudo docker run -itd --net=backend --name=server server_img /bin/bash

    像之前一样,登录到该容器:
    $ sudo docker attach server

    如果你看不见shell提示符,按键盘方向键的上箭头。

    现在让我们启动在该容器里基于Apache的HTTP服务:
    $ /etc/init.d/apache2 start

    到这里为止,任何位于backend网络中的容器将可以连接到我们刚才创建的Apache HTTP服务器上。

    我们可以通过在另一个终端上开启一个客户端容器并且把它至于backend网络进行测试。

    就像这样:
    $ sudo docker run -itd --net=backend --name=client client_img /bin/bash

    进入容器:
    $ sudo docker attach client

    同样地,如果你看不见shell提示符,按键盘方向键的上箭头。
    接着运行:
    $ curl server

    你应该可以看见默认的HTML页面。这意味着我们配置的网络是可以正常运行的。

    就像在本系列文章的第一节中提及到的一样,Docker负责设置容器名称便于解析,这就是为什么我们可以直接用curl server 这个命令而不用知晓它的IP地址。

    我们可以创建多个用户定义的网络,并且可以根据应用程序的拓扑结构把这些容器放在单个或多个网络中。这是非常灵活的,特别是对于那些需要交付微服务(microservices),多租户(multitenancy)及微分段(micro-segmentation)的人员来说是非常有用的。
    #多主机网络(Multi-Host Networking)
    如果我们想要建立一个跨越多台主机的网络该怎么做呢?当然,自从Docker1.9.0之后,你就可以这么做了!

    目前为止,我们已经使用了基于本地范围的bridge网络驱动,这意味着桥接网络是在Docker宿主机本地的。Docker现在提供了一个新的全局范围的overlay网络驱动,这意味着overlay的网络可以跨越多台Docker宿主机。并且这些Docker宿主机可以存在于不同的数据中心,甚至不同的云服务提供商中!

    为了设置一个overlay网络,以下几点是必须的:

    * 一台内核版本高于3.16的主机
    * 关键的key-value存储(例如 etcd, ConsulApache ZooKeeper
    * 集群内的主机可以保证连接到以上的key-value存储
    * 每一个集群内的主机都正确配置了基于 Docker Engine的后台实例

    让我们来看一个案例吧。

    我将会使用multihost-local.sh脚本和Docker Machine这个命令去开启三台虚拟主机。

    这个脚本是用于虚拟机的而不是用于容器的。在这之后,我们在这些虚拟机上面运行Docker命令去模拟一个Docker宿主机集群。

    在运行过脚本之后,可以看到我现在有的主机清单:
    $ docker-machine ls
    NAME ACTIVE DRIVER STATE URL SWARM ERRORS
    mhl-consul - virtualbox Running tcp://192.168.99.100:2376
    mhl-demo0 - virtualbox Running tcp://192.168.99.101:2376
    mhl-demo1 - virtualbox Running tcp://192.168.99.102:2376

    好了,那么让我们倒退回去看下刚才发生了些什么。

    这个脚本利用了Docker Machine,这意味着你必须安装它。在本篇文章中,我们安装了0.5.2版本的Docker Machine。你可以参考该版本的发行注释说明来下载并安装它。

    该脚本(multihost-local.sh)使用了Docker Machine去部署三台基于VirtualBox的虚拟机并且安装并适当的配置了Docker Engine。

    Docker Machine可以与很多主流虚拟化管理程序以及云服务提供商一起协助。它现在支持AWS、Digital Ocean、Google Cloud Platform、IBM Softlayer、Microsoft Azure和Hyper-V、OpenStack、Rachspace、VitrualBox、VMware Fusion®、vCloud® Air™ and vSphere®。

    我们现在有了三个虚拟机:

    * mhl-consul: 运行 Consul
    * mhl-demo0: Docker 集群节点
    * mhl-demo1: Docker 集群节点

    这些Docker集群节点是被配置为协调通过VM来运行Consul,我们的key-value仓库。这也就是这些集群所涉及到的。

    很酷吧,让我们再快速地往前看一看。

    现在,让我们设置一个overlay网络。

    首先,我们需要用一个在mhl-demo0这个VM上的终端,像这样:
    $ eval $(docker-machine env mhl-demo0)

    然后运行:
    $ docker network create -d overlay myapp

    该命令建立了一个名为myapp的跨越所有集群中主机的overlay网络。由于Docker通过key-value与该集群上的其他主机协调使得该操作变成了可能。

    为了确保它正常的工作,我们可以通过终端登录到每一个集群中的VM去列出这些Docker网络。

    复制下面所有的eval命令,然后用相对应的主机名去替换mhl-demo0。

    然后运行:
    $ docker network ls
    NETWORK ID NAME DRIVER
    7b9e349b2f01 host host
    1f6a49cf5d40 bridge bridge
    38e2eba8fbc8 none null
    385a8bd92085 myapp overlay

    到这里你就看到名为myapp的overlay网络了。

    咱们成功啦!

    但请记住:我们目前仅仅是创建了一个基于Docker 虚拟机的集群并配置了用于共享的overlay网络。我们实际上并没有创建任何Docker容器。所以让我们接着创建它们并来试一下这个overlay网络。

    我们将做以下步骤:

    1. 在mhl-demo0宿主机上运行默认地nginx镜像(这提供给了我们一个预先配置好的Nginx HTTP服务器)
    2. 在mhl-demo1宿主机上运行默认的busybox镜像(它提供给我们一个基本的操作系统并且还包含一个类似于基于GNU的Wget工具)
    3. 将两个容器添加进myapp网络
    4. 测试他们之间的网络连通性

    首先,让我们调出在mhl-demo0宿主机上的终端:
    $ eval $(docker-machine env mhl-demo0)

    然后启动nginx镜像:
    $ docker run --name ng1 --net=myapp -d nginx

    简而言之,我们现在有以下环境:

    * 一台基于Nginx的HTTP服务器
    * 该服务跑在名为ng1的容器里
    * 它处在myapp网络中
    * 该容器位于mhl-demo0宿主机上

    让我们从其他宿主机上的另外一个容器试着去访问该环境,去验证它是可用的。

    这一次调出mhl-demo1宿主机上的终端:
    $ eval $(docker-machine env mhl-demo1)

    然后运行:
    $ docker run -it --net=myapp busybox wget -qO- ng1

    以上命令其实做了以下几点:

    * 从busybox镜像中创建了一个未命名的容器
    * 将它添加进了myapp网络
    * 运行了wget -qO- ng1命令
    * 并且停止了该容器(我们在这之前是让容器运行的)

    在以上的Wget命令中,ng1是我们Nginx的容器名称。Docker可以让我们使用解析到的主机名作为容器名称,甚至该容器是运行在不同的Docker宿主机上。

    如果所有操作都是成功的,那么我们应该会看见以下类似的内容:






    Welcome to nginx!

    你看吧!我们现在拥有了一个基于多主机的容器网络。
    #总结
    Docker给予了诸如轻量级且独立地并能隔离的环境这样的优点。然而,要使容器对我们而言有用途,容器之间以及容器与主机网络之间要能互相通信才是至关重要的。

    在这一系列文章中,我们探索了一些容器间本地互联和跨多个宿主机互联的方法。同样地,我们也聊了聊该如何在主机网络中去连接多个容器。

    原文链接:Connecting Docker Containers, Part Two (翻译:薛开成)

    ===========================================
    译者介绍
    薛开成,趋势科技南京研发中心工程工具服务事业部基础架构高级工程师,负责容器仓库实施及落地。

    Docker容器互联方法-篇一

    绝地魔影 发表了文章 • 0 个评论 • 18801 次浏览 • 2016-03-23 15:26 • 来自相关话题

    【编者的话】本文为Eddy Mavungu博士于DEIS官方博客中发布的系列文章的第一部分,Eddy博士在本篇系列文章中分享了Docker容器间互联的方法,并且做了演示。Eddy博士是DEIS公司的创始人,同时也是一位高级研究顾问。本文根据他于DEIS官方博客 ...查看全部
    【编者的话】本文为Eddy Mavungu博士于DEIS官方博客中发布的系列文章的第一部分,Eddy博士在本篇系列文章中分享了Docker容器间互联的方法,并且做了演示。Eddy博士是DEIS公司的创始人,同时也是一位高级研究顾问。本文根据他于DEIS官方博客上发布的文章翻译而成。

    @Container容器技术大会将于6月4日在上海光大会展中心国际大酒店举办,来自携程、PPTV、蚂蚁金服、京东、浙江移动、海尔电器、唯品会、eBay、道富银行、麻袋理财、土豆网、阿里百川、腾讯游戏、点融网等公司的技术负责人将带来实践经验分享,4月7日之前购票只需338元,欢迎感兴趣的同学抢购。

    Docker容器都是独立的,互相隔离的环境。然而,它们通常只有互相通信时才能发挥作用。

    虽然有许多方法可以连接容器们,可是我将并不会试着去将其全部讨论在内。但是在这一系列的方法中,我们将看看那些常用的做法。

    虽然看起来是很浅显,但是这对于与Docker成天打交道的朋友来说,理解这些技术及底层的设计理念就显得非常地重要了。

    理解这些主题将会:

    • 帮助开发和运维人员探索广泛的容器部署的选择。
    • 让开发和运维人员更自信的着手于微服务(microservice)架构设计。
    • 让开发和运维人员可以较好的编排更复杂的分布式应用程序。
    幸运地是,大量的连接选项为容器间通信打开了更为广泛的方法,可以让我们灵活地选择一个架构并能适合任何应用程序的需求。在这篇文章中,我们将会看一下三个较为古老也是更基本的连接各容器的方法。我们会将这种知识和经验作为基石,然后在下一章节中转移到两种较新,较为简单且更强大的方法。#配置在我们展示容器间如何被连接之前,我们需要先建立一对容器作为本次的例子。第一个镜像将是来源于一个简单的Ubuntu操作系统安装。它将扮演一个客户端容器的角色。首先,我们创建该容器并连接到它。
    $ sudo docker run -itd --name=client_setup ubuntu /bin/bash$ sudo docker attach client_setup
    接下来,一旦有了容器内的shell程序,我们就可以运行以下命令:
    $ apt-get install curl
    如果你看不见shell命令提示符,点击键盘方向区的向上箭头。当容器安装完毕,执行CTRL+P和CTRL+Q命令退出该容器。紧接着我们停止并提交该容器。
    $ sudo docker stop client_setup$ sudo docker commit client_setup client_img
    现在我们可以使用刚才创建的名为client_img的容器了。第二个容器我们还是从之前的Ubuntu操作系统的安装上获得。但是这一次,我们将把它修改成一个运行了Apache HTTP的服务器容器。首先,我们像之前一样建立并且连接到它:
    $ sudo docker run -itd --name=server_setup ubuntu /bin/bash$ sudo docker attach server_setup
    然后,一旦我们可以用容器内的shell程序了,就可以能安装Apache的HTTP服务了。
    $ apt-get install apache2
    当容器安装完毕,执行CTRL+P和CTRL+Q命令退出该容器。现在我们停止并提交容器:
    $ sudo docker stop server_setup$ sudo docker commit server_setup server_img
    那么现在我们就有了两个镜像了,分别是 client_img 和 server_img。当这些设置好后,我们就可以探索多种的容器间连接的可能性了。#Docker桥接(Bridge)单个Docker容器是默认地与其他容器和外部网络隔离的。Docker提供了bridge接口,名为docker0,这其实是在Docker Engine安装时就建立好的。它通过Docker的bridge接口可以让容器间以及容器和主机之间进行通信。我们可以通过下面的命令来查看一个位于Docker宿主机上的Docker bridge:
    $ ifconfig docker0
    你可以看到类似如下的输出:
    docker0   Link encap:Ethernet  HWaddr 02:42:a2:dc:0f:a8            inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0          inet6 addr: fe80::42:a2ff:fedc:fa8/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:1477 errors:0 dropped:0 overruns:0 frame:0          TX packets:2436 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:83901 (83.9 KB)  TX bytes:3606039 (3.6 MB)
    该bridge接口在本地一个单独的Docker宿主机上运行,并且它是我们本篇文章所提及的所有三种方法背后的连接机制。在下一章节中,我们将转向overlay接口,这种接口允许把网络容器部署在多个Docker宿主机上。#端口公开(Exposing Ports)首先,让我们看下如何运行一个容器服务并且公开其80端口(HTTP)给其他容器。为了这么做,我通过expose命令去运行该容器,这是告诉Docker在运行该容器的时候让其公开特定的端口。当然,被公开的端口是可以被其他容器访问的。让我们运行server_img并且把该容器命名为server1,公开其80端口:
    $ sudo docker run -itd --expose=80 --name=server1 server_img /bin/bash
    接下来我们会按依次命名这些容器(server1,server2以及其他)。然后,连接到容器:
    $ sudo docker attach server1
    重申一遍,如果你看不见shell命令提示符,可以使用方向键的向上箭头。启动该容器内的Apache HTTP服务:
    $ /etc/init.d/apache2 start
    让我们来看下获得的IP地址:
    $ ifconfigeth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:03            inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
    那么,这样我们就有了172.17.0.3这个IP地址。让我们试一下从一个客户端的容器里去看这些信息吧。打开第二个终端。启动名称为client1的容器:
    $ sudo docker run -itd --name=client1 client_img /bin/bash
    进容器里看一下:
    $ sudo docker attach client1
    如果你看不见shell命令提示符,可以使用方向键的向上箭头。让我们来测试一下到server1的连通性:
    $ curl 172.17.0.3
    如果一切正常,你应该可以看见基于Apache HTTP服务的默认页面。这表明client1容器已经可以与server1容器的HTTP端口正确地建立连接了。#端口绑定(Port Binding)如果我们希望我们的HTTP服务器公开在主机网络呢,包括主机上的应用及主机网络上的其他机器?在这个方案中,我们需要去将主机端口绑定(bind)至容器端口。为了让基于Apache的HTTP服务器公开给主机所处的网络,我们需要将该容器的80端口绑定至宿主机上的8080端口。我们可以按照以下命令来这么做:
    $ sudo docker run -itd -p 8080:80 --name=server2 server_img /bin/bash
    在这里需要注意的是-p 8080:80选项。现在,进容器看下:
    $ sudo docker attach server2
    如果看不见shell的提示符,和之前一样,按方向区的向上箭头,紧接着我们启动该HTTP服务:
    $ /etc/init.d/apache2 start
    现在,我们可以从宿主系统去访问http://localhost:8080/,同时应该能看见基于Apache HTTP服务的默认页面。
    1231233.png
    任何在你主机网络内的那些机器都可以访问由你的宿主机所发布出来的8080端口。#容器链接(Linking Containers)Docker将另一种涉及到的连接各容器的方法称为链接(linking)。当你将一个容器链接到另一个容器的时候,Docker将通过一些环境变量来关联这些容器之间的信息。我们可以看一下。首先,启动该服务器容器。
    $ sudo docker run -itd --name=server3 server_img /bin/bash
    接着通过以下命令一样去启动客户机容器并链接至服务器容器。
    $ sudo docker run -itd --link server3 --name=client3 client_img /bin/bash
    请注意我们这里用了--link server3 选项。接着我们登录到客户机容器看一眼:
    $ sudo docker attach client3
    然后我们检查一下可用的环境变量:
    $ env | grep SERVER3SERVER3_PORT_80_TCP_PROTO=tcpSERVER3_PORT=tcp://172.17.0.2:80SERVER3_PORT_80_TCP_PORT=80SERVER3_NAME=/client3/server3SERVER3_PORT_80_TCP=tcp://172.17.0.2:80SERVER3_PORT_80_TCP_ADDR=172.17.0.2
    Docker同样也更新了客户端容器中的/etc/hosts 文件并且将server3作为一个本地主机指向了服务器容器。为了演示该情况,让我们运行以下命令看一看:
    $ curl server3
    你应该可以再一次看见那个相同的默认HTML页面了。#总结在这一系列的第一部分,我们介绍了Docker桥接(bridge)接口,它可以让我们连接同一台宿主机上的各容器。我们也聊了聊以下三种连接方法:
    • 通过端口公开(port exposure)连接
    • 将宿主机端口绑定(bind)至容器端口
    • 通过链接(link)选项去连接两个容器

    在第二部分,我们将一睹隔离容器内部的用户定义网络。我们也会介绍overlay接口并且看一眼该如何在多个Docker宿主机之间去将Docker容器连接起来。它甚至可以跨越数据中心和云提供商!

    原文链接:Connecting Docker Containers, Part One (翻译:薛开成)

    ===========================================
    译者介绍
    薛开成,趋势科技南京研发中心工程工具服务事业部基础架构高级工程师,负责容器仓库实施及落地。

    HeheCloud集群构建指南

    一个开发者 发表了文章 • 0 个评论 • 2579 次浏览 • 2016-03-03 22:15 • 来自相关话题

    HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。并且帮助您轻松的部署和管理应用、快速的集成更多的服务。 1. 创建集群 1. 在控制台页面,点击 添加新集群 2. 在 ...查看全部

    HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。并且帮助您轻松的部署和管理应用、快速的集成更多的服务。



    1. 创建集群

    1. 在控制台页面,点击 添加新集群
    2. 在弹出框中输入集群名称; 您可以通过 HeheCloud 支持的云平台, 或者自己的物理机、虚拟机来搭建集群
    3. 点击 创建 按钮

    ![截图][1]

    2. 准备主机

    - 操作系统:CoreOS 版本 >= 681.2.0
    - 至少4GB内存(越多越好)
    - `/var/lib/docker` 卷下至少40GB的硬盘空间(通常需要额外挂载云硬盘,便于以后随时扩容。可以使用我们的脚本自动分区)
    - 添加的主机和集群中的其他主机在同一内网中,并且主机之间内网通畅
    - 保证docker可以正常运行,docker版本建议1.7及以上
    - 保证所有主机的machine-id互不相同,否则无法组建集群

    # a. 阿里云
    以阿里云为例
    如果你希望使用阿里云 ECS 来搭建集群,请在其 购买页面 选择符合要求的主机:

    ![截图][2]

    我们在 北京区 购买了 3 台 CoreOS ECS。在阿里云为您创建好 ECS 之后,你可以登入 ECS 控制台,查看 ECS 实例的相关信息:

    ![截图][3]

    每个实例会分配一块私网网卡,并绑定一个私网 IP,ECS 实例之间可以通过内网互访。

    接下来,我们格式化数据云盘并 mount 到 ``/var/lib/docker`` 卷下。

    首先在 ECS 控制台查看数据云盘的挂载点:

    ![截图][4]

    对于每一台 ECS 实例:

    • 通过 SSH 登录到实例并运行下面的命令格式化数据云盘
    ```curl -sSL http://api.hehecloud.com/v1/mount/dev/<挂载点名称> | sudo -H sh```
    • 运行 `df -lh` 命令查看 `/var/lib/docker` 是否添加成功
    ![][5]
    • 另外,运行 `docker info` 查看docker是否能够正常运行
    • 运行 `cat /etc/machine-id` 查看 machine-id。目前,我们批量购买的 ECS 实例的 machine-id 是相同的,这会导致无法顺利组建集群。我们需要重新生成以保证所有主机的 machine-id 互不相同:
    ```# 删除原有machine-idsudo rm /etc/machine-id# 重新生成machine-idsudo systemd-machine-id-setup# 重启实例sudo reboot``` 3. 添加主机回到 控制台我的集群 点击刚才创建的集群,进入 集群管理。我们要按步骤对集群进行初始化,第一步就是要向集群中添加至少三台主机:![][6]在上一节我们已经准备好了主机,因而现在我们只需要按照提示完成安装主机监控程序的操作, 即需要我们依次登录主机,执行:```curl -sSL http://get.hehecloud.com/install.sh | sudo sh -s ```安装成功后,控制台会提示主机添加成功,您可以继续添加直到成功添加三台 4. 集群初始化在向集群添加完 3 台主机后,您就可以设置集群的相关参数并构建集群环境了。在参数设置这一步中,您需要设置管理集群的安全账户和密码:![][7]点击下一步来构建集群环境:![][8]最终,集群完成初始化,我们可以通过它创建/管理应用:![][9]HeHeCloud 为您分配了 Deis Hostname,您部署的应用会处于该域名之下。例如,如果你的应用标识名为 `myapp`,那么你可以通过 `myapp.` 对应用进行访问。另外,你还可以使用 `deis` 命令行工具登录到 `Deis Endpoint`,对应用进行管理。 更多文章[list=1]
  • [使用HeheCloud快速部署一个Wordpress应用][10]
  • [使用HeheCloud一键集成SaaS服务][11]


  • [1]: http://hehe.sinacloud.net/images/create-cluster.png
    [2]: http://hehe.sinacloud.net/images/deis_aliyun.png
    [3]: http://hehe.sinacloud.net/images/aliyun-ecs.png
    [4]: http://hehe.sinacloud.net/images/aliyun-disk.png
    [5]: http://hehe.sinacloud.net/images/fomat_disk.png
    [6]: http://hehe.sinacloud.net/images/add-host.png
    [7]: http://hehe.sinacloud.net/images/config-cluster.png
    [8]: http://hehe.sinacloud.net/images/build-cluster.png
    [9]: http://hehe.sinacloud.net/images/cluster-info.png
    [10]: http://dockone.io/article/1063
    [11]: http://dockone.io/article/1069

    使用HeheCloud一键集成SaaS服务

    一个开发者 发表了文章 • 0 个评论 • 2574 次浏览 • 2016-02-28 23:29 • 来自相关话题

    HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。并且帮助您轻松的部署和管理应用、快速的集成更多的服务。 今天我们介绍如何使用 `服务集成` 功能,一键集成SaaS服务:`cSphere` 和 `D ...查看全部

    HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。并且帮助您轻松的部署和管理应用、快速的集成更多的服务。




    今天我们介绍如何使用 `服务集成` 功能,一键集成SaaS服务:`cSphere` 和 `Datadog`

    * cSphere: 国内首个Docker管理平台,cSphere将运行在各种基础设施中的Docker主机及其容器聚合到中心的Controller提供全局的WEB界面、图表和API、和自动化监控报警。https://csphere.cn/
    > * Datadog: 一站式云端性能监控平台。https://www.datadoghq.com/



    开始集成之前请确保您已经按照引导添加主机并完成集群的初始化

    cSphere

    1. 点击左侧导航的 `服务集成`,选择 `SaaS服务` 标签中的 `cSphere`
    2. 直接点击 `开启` 按钮,安装并运行 `cSphere`

    ![][1]

    稍等片刻,等待服务状态变为 `运行中`,安装过程就这么简单。

    你可以直接访问 `CONTROLLER_URL` 进入cSphere的面板

    ![][2]

    进入cSphere面板,初始化cSphere账号后,您就可以管理集群内所有主机了。

    ![][3]

    ![][4]


    Datadog

    同样简单:
    1. 点击左侧导航的 `服务集成`,选择 `SaaS服务` 标签中的 `Datadog`
    2. 点击 `开启` 按钮,输入您在`Datadog`账号中创建的`API Key`

    ![][5]

    稍等片刻,等待服务状态变为 `运行中`,安装过程同样这么简单。

    ![][6]

    现在我们就可以登录`Datadog`控制台查看集群内所有主机的监控信息和性能指标了

    ![][7]

    ![][8]


    [1]: http://sinacloud.net/hehe/images/services/csphere-1.png
    [2]: http://sinacloud.net/hehe/images/services/csphere-2.png
    [3]: http://sinacloud.net/hehe/images/services/csphere-3.png
    [4]: http://sinacloud.net/hehe/images/services/csphere-4.png
    [5]: http://sinacloud.net/hehe/images/datadog-2.png
    [6]: http://sinacloud.net/hehe/images/datadog-1.png
    [7]: http://sinacloud.net/hehe/images/datadog-3.png
    [8]: http://sinacloud.net/hehe/images/datadog-4.png





    使用HeheCloud快速部署一个Wordpress应用

    一个开发者 发表了文章 • 0 个评论 • 2776 次浏览 • 2016-02-26 18:27 • 来自相关话题

    使用 HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。 > 并且帮助您轻松的部署和管理应用、快速的集成更多的服务。 您可以使用三种不同的方式来构建应用: > H ...查看全部

    使用 HeheCloud 能够帮助您快速构建一个基于容器的高可用弹性集群环境。
    > 并且帮助您轻松的部署和管理应用、快速的集成更多的服务。

    您可以使用三种不同的方式来构建应用:

    > Heroku Buildpack:* 适用于 Heroku 风格的应用。
    > Dockerfile:* 基于你所选择的基础 OS,可定制轻便的应用运行环境。
    > Docker镜像:* 有利于简化持续集成 / 持续交付的构建流程。

    这里我们使用`Docker镜像`方式为例部署一个完整的`Wordpress`,讲解如何部署一个完整的应用。

    开始以下步骤之前请确保您已经按照引导添加主机并完成集群的初始化

    创建MySQL服务

    点击左侧导航的`服务集成`,选择`MySQL`

    services-1.png

    然后点击 `开启` 按钮,来安装并开启MySQL服务
    services-2.png

    稍等片刻,等待服务状态变为 `运行中`,并且等待配置信息加载完成
    services-3.png

    如果您需要在线管理MySQL的话, 可以开启 `附加服务` 中的 `phpMyAdmin`
    services-4.png

    创建应用

    首先您需要按照 `使用指南` 安装Deis客户端,并使用Deis客户端登录您构建集群时设置的安全账号

    这里,我们借用 DaoCloud 提供的国内加速的 Wordpress Docker 镜像:
    daocloud.io/daocloud/dao-wordpress:latest

    打开命令行窗口,运行命令:

    创建一个目录 `blog`,并进入目录下:
    $ mkdir blog && cd blog

    初始化Git,并且使用 `deis` 创建一个名为 `blog` 的应用:
    $ git init
    $ deis create blog

    我们查看镜像的说明,得到需要设置的环境变量:
    > WORDPRESS_DB_HOST 数据库主机地址( MySQL服务的 IP 和 端口,例如:`:3306` )
    > WORDPRESS_DB_USER 数据库用户名( 默认为 root )
    > WORDPRESS_DB_PASSWORD 数据库密码( 连接数据库的密码 )

    将我们刚才开启的MySQL服务的配置信息写入应用的环境变量:
    deis config:set \
    WORDPRESS_DB_HOST="10.171.135.123:3306" \
    WORDPRESS_DB_USER="root" \
    WORDPRESS_DB_PASSWORD="0pztkvjVGQaeeNsfJUDx"

    最后,我们直接通过镜像部署应用:
    deis pull daocloud.io/daocloud/dao-wordpress:latest

    稍等片刻,大功告成!

    点击左侧导航的 `我的应用` 并查看应用信息、容器信息以及访问日志等:
    services-5.png

    services-6.png

    services-6-1.png

    services-6-2.png

    最后看一下我们部署的博客:
    services-8.png

    services-9.png

    绑定域名

    此外,如果您想使用自定义域名,可以运行:
    deis domains:add hehe123.com

    命令运行完毕,您就可以把域名解析到您的主机上了。

    > 更多高级用法请查看:官方使用指南 和 Deis中文指南

    完整版本Deis中文指南,送给需要的朋友

    一个开发者 发表了文章 • 2 个评论 • 3372 次浏览 • 2016-02-01 15:54 • 来自相关话题

    完整版本Deis中文指南:http://deis.heheapp.com/
    完整版本Deis中文指南:http://deis.heheapp.com/

    Engine Yard的Deis平台推出基于Docker的PaaS商业支持

    夕口夕 发表了文章 • 0 个评论 • 4316 次浏览 • 2015-07-02 12:07 • 来自相关话题

    【编者的话】Engine Yard今年四月份收购Deis时,表示将会就其提供商业支持,现在,终于来了。 今年早些时候,云平台服务商[Engine Yard收购基于Docker的开源PaaS平台Deis][1]。一直以来,Engine ...查看全部
    【编者的话】Engine Yard今年四月份收购Deis时,表示将会就其提供商业支持,现在,终于来了。

    今年早些时候,云平台服务商[Engine Yard收购基于Docker的开源PaaS平台Deis][1]。一直以来,Engine Yard因其提供的支持服务著称,今后,该公司还将向商家提供“购买Deis支持”的选项。

    [Deis][2]是一个基于Docker和CoreOS的平台,旨在为开发者提供一个本质上是私人托管的Heroku平台。对于非Docker用户,它甚至还提供提供了运行Ruby、Python、Node.js、Java、PHP、Perl和Go等应用的Heroku buildpacks。因为Deis是基于Docker的,它具有高度的扩展性和便携性,用户可以借助Dokerfile和Docker镜像快速部署任何应用。

    目前,Mozilla和Coinbase都是Deis的用户。

    新的支持服务提供两种版本:标准版和高级版。标准版在正常工作时间提供web和电子邮件支持,高级版则提供7*24的全天候电话支持并保证30分钟的响应时间。

    此外,Engine Yard还将为现有的自定义平台提供安装支持,培训与帮助。

    Deis的创始人和Engine Yard的CTO Gabe Monroy说,Deis所提供的开源产品和公司的商业客户所得到的是完全一致的。Deis所做的,只是为有偿服务推出了一个新的图形界面,这样一来,只需点击两下鼠标,便可以启动一个AWS上的Deis集群。

    Monroy说:“Docker已经改变了我们构建、发布、运行应用的方式。但有些公司在使Docker适应生产工作负载的过程中遇到了棘手问题。大型社区的使用者和贡献者们见证了Deis已经成功帮助许多公司将Docker投入生产。有了Deis PRO——最简单的运行Deis 集群的方式,在分布式系统中管理Docker便不再是难事。”

    Monroy表示,相较于同类以Docker为中心提供PaaS服务的公司(如Cloud Foundry),他们公司的优势在于,产品是在Docker推出后开发的,也就是说从一开始,Docker就处于其产品核心的位置。

    原文链接:Engine Yard’s Deis Launches Commercial Support For Its Docker-Based PaaS(翻译:马远征)


    [1]: http://dockone.io/article/310
    [2]: http://dockone.io/article/124
    [3]: http://techcrunch.com/2015/06/30/engine-yard-launches-commercial-support-for-deis-docker-based-paas/

    Engine Yard收购基于Docker的开源PaaS平台Deis

    崔婧雯 发表了文章 • 1 个评论 • 4883 次浏览 • 2015-04-15 13:13 • 来自相关话题

    【编者的话】 PaaS领域的公司最近频繁合并,今天Engine Yard又宣布收购了OpDemand,其旗下的开源PaaS工具Deis还会继续保持开源。 Engine Yard,一家提供平台即服务(PaaS)云来帮助开发人员构建并运行 ...查看全部
    【编者的话】 PaaS领域的公司最近频繁合并,今天Engine Yard又宣布收购了OpDemand,其旗下的开源PaaS工具Deis还会继续保持开源。

    Engine Yard,一家提供平台即服务(PaaS)云来帮助开发人员构建并运行应用的创业公司,今天宣布收购OpDemand,OpDemand是一家创建了开源PaaS平台Deis的创业公司。

    “加入Engine Yard之后,Deis会继续作为开源项目在社区里发展壮大。Engine Yard会帮助该项目的发展,Deis仍然会是部署和管理生产环境里分布式应用的最佳工具。” OpDemand 首席技术官,Deis创始人Gabriel Monroy在博客里说。

    Deis基于Linux容器技术,这已经成为如今开发的热点区域。可以在Docker容器里运行的应用,也可以在Deis上运行。

    PaaS领域的公司最近频繁合并,比如,CenturyLink收购了AppFog。Docker,曾经称为dotCloud,离开了PaaS领域进军容器市场而声名鹊起。

    对于想要使用开源的Deis代码在他们自己的数据中心运行自己的PaaS平台的开发人员,Engine Yard不是直接收取额外费用,而是会为其提供商业支持。

    Engine Yard,总部在San Francisco,2006年创建。

    OpDemand创建于2011年,总部在Boulder,Colorado。投资人包括Zor Gorelov。

    Monroy的博客上有这次收购的更多内容。

    原文链接:Engine Yard buys OpDemand, the startup behind open-source cloud platform Deis(翻译:崔婧雯 校对:李颖杰)
    ===========================
    译者介绍
    崔婧雯,现就职于IBM,资深软件工程师,负责WebSphere业务流程管理软件的系统测试。曾在VMware担任过桌面虚拟化产品的测试工作。对虚拟化,中间件技术有浓厚的兴趣。