所以我最近发现了这个很棒的工具,它说
Docker是一个开源项目,可轻松创建轻量级, 任何应用的便携式自给式容器。相同 开发人员在笔记本电脑上构建和测试的容器可以运行 规模,生产,虚拟机,裸机,OpenStack集群,公共 云等等。
假设我有一个运行Nginx的docker镜像,并且一个网站连接到外部数据库。如何在生产中扩展容器?
答案 0 :(得分:568)
首先感谢那些多年来一直赞成这个答案的人。
请注意,这个问题是在2013年8月提出的,当时Docker还是一项非常新的技术。从那时起:Kubernetes于2014年6月推出,Docker swarm已于2015年2月整合到Docker引擎中,亚马逊于2015年4月推出container solution, ECS,,2015年8月推出Google launched GKE。可以说生产集装箱领域发生了重大变化。
简短的回答是你必须编写自己的逻辑才能做到这一点。
我希望这个功能能够从以下项目中出现,这些项目建立在docker之上,旨在支持生产中的应用程序:
我最近发现的另一个相关项目:
最新版本Openstack包含对管理Docker容器的支持:
管理Docker实例的系统
关于如何使用Packer,Docker和Serf等工具来提供不可变服务器基础架构模式的演示文稿
关于如何使用serf:
将docker容器连接在一起的简洁文章使用Mesos框架
在Marathon上运行DockerMesosphere Docker Developer Tutorial
在Tsuru上运行Docker,因为它支持docker-cluster和segregated scheduler deploy
基于Docker的环境编排
Google kubernetes
Redhat重构了他们的openshift PAAS以集成Docker
Docker NodeJS lib包装Docker命令行并从json文件管理它。
亚马逊的新container service支持在群集中进行扩展。
严格来说Flocker不会“扩展”应用程序,但它旨在实现一个相关的功能,即使多个docker主机上的状态容器(运行数据库服务?)可移植:
用于创建描述Docker应用程序的可移植模板的项目:
Docker项目现在正在解决编排问题(参见announcement)
另见:
Openstack项目现在有一个名为Magnum的新“容器即服务”项目:
显示了许多承诺,可以轻松设置Docker编排框架,如Kubernetes和Docker swarm。
Rancher是一个快速成熟的项目
精美的用户界面以及对混合Docker基础架构的强烈关注
Lattice project是Cloud Foundry的一个分支,用于管理容器群集。
Docker最近收购了Tutum:
部署在Kubernetes上的应用程序的程序包管理器。
Vamp是一个开源和自托管平台,用于管理依赖容器技术的(微)面向服务的体系结构。
分布式,高可用性,数据中心感知调度程序
来自给我们Vagrant和其他强大工具的人。
AWS的容器托管解决方案,开源并基于Kubernetes
位于德国的基于Apache Mesos的容器
https://sloppy.io/features/#features
Docker Inc.还提供名为Docker cloud的容器托管服务
Jelastic是托管的PAAS服务,可自动扩展容器。
答案 1 :(得分:42)
Deis自动扩展Docker容器(以及其他内容)。
Deis(发音为DAY-iss)是一种开源PaaS,可以轻松地在您自己的服务器上部署和管理应用程序。 Deis构建于Docker和CoreOS之上,以提供具有Heroku灵感工作流程的轻量级PaaS。
以下是开发人员工作流程:
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自动在CoreOS集群中部署Docker容器,并配置Nginx路由器以将请求路由到健康的Docker容器。如果主机死机,则容器会在几秒钟内自动在另一台主机上重新启动。只需浏览代理网址,或使用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/上的终端视频。您也可以learn about Deis concepts或直接跳到deploying your own private PaaS。
答案 2 :(得分:19)
你可以试试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/
答案 3 :(得分:18)
查看Rancher.com - 它可以管理多个Docker主机等等。
答案 4 :(得分:9)
扩展Docker的明智方法可能是:
来自Yandex的另一个docker开源项目:
答案 5 :(得分:2)
Openshift人也创建了一个项目。您可以找到更多信息here,尝试test container和详细信息here。 唯一的问题是解决方案现在是以Redhat为中心:)
答案 6 :(得分:2)
虽然我们是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项目似乎非常有希望:
答案 7 :(得分:1)
答案 8 :(得分:1)
巴拿马型:人类的码头管理。 panamax.io
图:使用Docker的快速,隔离的开发环境。 fig.sh
答案 9 :(得分:1)
其他帖子中未提及的一个选项是Helios。它是由spotify构建的,不会尝试做太多。