最近我发现了一个很棒的工具,它说:
Docker是一个开源项目,可以轻松创建轻量级、可移植和自给自足的容器。开发人员在笔记本上构建和测试的同一容器可以在各种规模、生产环境中运行,如虚拟机、裸机、OpenStack集群、公共云等。
假设我有一个运行Nginx并连接到外部数据库的Docker镜像。那么,如何在生产环境中扩展容器?
最近我发现了一个很棒的工具,它说:
Docker是一个开源项目,可以轻松创建轻量级、可移植和自给自足的容器。开发人员在笔记本上构建和测试的同一容器可以在各种规模、生产环境中运行,如虚拟机、裸机、OpenStack集群、公共云等。
假设我有一个运行Nginx并连接到外部数据库的Docker镜像。那么,如何在生产环境中扩展容器?
首先感谢多年来支持本答案的人们。
请注意,这个问题是在2013年8月提出的,当时Docker还是一项非常新的技术。此后:Kubernetes于2014年6月推出,Docker Swarm于2015年2月集成到Docker引擎中,亚马逊于2015年4月推出了其容器解决方案ECS,Google于2015年8月推出了GKE。可以说,生产容器的格局已经发生了巨大变化。
简短的回答是,您必须编写自己的逻辑来实现此功能。
我预计这种功能会从以下基于Docker构建、旨在支持生产应用的项目中出现:
我最近发现的另一个相关项目:
最新的Openstack版本包含管理Docker容器的支持:
用于管理Docker实例的系统
以及如何使用Packer、Docker和Serf等工具提供不可变服务器架构模式的演示。
一篇关于如何使用serf将Docker容器组合在一起的整洁文章:
在Tsuru上运行Docker,因为它支持docker-cluster和分离的调度器部署
基于Docker的环境编排
红帽重新设计了他们的openshift PAAS以集成Docker
亚马逊的新容器服务可以实现集群扩展。
严格来说,Flocker并不会“扩展”应用程序,但它旨在实现使有状态容器(运行数据库服务?)在多个Docker主机之间可移植的相关功能:
一个创建描述Docker应用程序的便携式模板的项目:
Docker项目现在原生地解决编排问题(请参见公告)
另请参见:
Openstack项目现在有一个名为Magnum的新的“容器即服务”项目:
显示了很多潜力,可以轻松设置Docker编排框架,如Kubernetes和Docker swarm。
Rancher是一个迅速成熟的项目
良好的UI,并专注于混合Docker基础设施
Lattice项目是Cloud Foundry的一个分支,用于管理容器集群。
Docker最近收购了Tutum:
应用程序包管理器,部署在Kubernetes上。
Vamp是一个基于容器技术的开源自托管平台,用于管理(micro)service架构。
A Distributed, Highly Available, Datacenter-Aware Scheduler
由为我们提供Vagrant和其他强大工具的团队提供。
基于Kubernetes的AWS容器托管解决方案,开源的。
位于德国的基于Apache Mesos的容器托管。
https://sloppy.io/features/#features
Docker Inc.还提供了名为Docker Cloud的容器托管服务。
Jelastic是一个托管的PAAS服务,可以自动扩展容器。
Deis自动化缩放Docker容器(以及其他内容)。
Deis(发音为DAY-iss)是一个开源PaaS,可以轻松地在您自己的服务器上部署和管理应用程序。 Deis基于Docker和CoreOS构建,提供了一个轻量级的PaaS,并采用Heroku的工作流程。
以下是开发者的工作流程:
deis create myapp # create a new deis app called "myapp"
git push deis master # built with a buildpack or dockerfile
deis scale web=16 worker=4 # scale up docker containers
Deis自动部署你的Docker容器到一个CoreOS集群并配置Nginx路由器将请求路由到健康的Docker容器。如果主机宕机,容器会在几秒钟内自动重新启动到另一台主机上。只需浏览代理URL或使用deis open
访问您的应用程序。
其他一些有用的命令:
deis config:set DATABASE_URL= # attach to a database w/ an envvar
deis run make test # run ephemeral containers for one-off tasks
deis logs # get aggregated logs for troubleshooting
deis rollback v23 # rollback to a prior release
要看到这个实际应用,请查看终端视频,链接为http://deis.io/overview/。您还可以了解Deis的概念,或直接跳转到部署您自己的私有PaaS。
您可以尝试使用 Tsuru。Tsuru 是一个受 Heroku 启发的开源 PaaS,已经在 Globo.com(巴西最大的广播电视公司的互联网部门)的一些产品中进行了生产。
它管理整个应用程序的流程,从容器创建、部署、路由(使用 hipache)到许多优秀功能,如 Docker 集群、单位缩放、分离部署等。
请查看以下文档: http://docs.tsuru.io/
这里是我们关于环境的文章: http://blog.tsuru.io/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers/
请看看 Rancher.com - 它可以管理多个Docker主机以及更多其他功能。
另一个 Yandex 开源的 Docker 项目:
虽然我们非常喜欢Deis(deis.io)并且正在积极地部署它,但还有其他像Heroku一样的PaaS风格的部署解决方案,包括:
Wayfinder公司的Longshoreman:
https://github.com/longshoreman/longshoreman
CloudCredo公司的Decker,使用CloudFoundry:
http://www.cloudcredo.com/decker-docker-cloud-foundry/
至于直接编排,NewRelic的开源Centurion项目似乎非常有前途:
mesosphere/mesos-docker
项目已被弃用,取而代之的是mesosphere/deimos
:https://github.com/mesosphere/deimos - Ross Allen