如何在生产中扩展Docker容器

时间:2013-08-17 04:47:12

标签: scale production docker

所以我最近发现了这个很棒的工具,它说

  

Docker是一个开源项目,可轻松创建轻量级,   任何应用的便携式自给式容器。相同   开发人员在笔记本电脑上构建和测试的容器可以运行   规模,生产,虚拟机,裸机,OpenStack集群,公共   云等等。

假设我有一个运行Nginx的docker镜像,并且一个网站连接到外部数据库。如何在生产中扩展容器?

10 个答案:

答案 0 :(得分:568)

更新:2019-03-11

首先感谢那些多年来一直赞成这个答案的人。

请注意,这个问题是在2013年8月提出的,当时Docker还是一项非常新的技术。从那时起:Kubernetes于2014年6月推出,Docker swarm已于2015年2月整合到Docker引擎中,亚马逊于2015年4月推出container solution, ECS,,2015年8月推出Google launched GKE。可以说生产集装箱领域发生了重大变化。


简短的回答是你必须编写自己的逻辑才能做到这一点。

我希望这个功能能够从以下项目中出现,这些项目建立在docker之上,旨在支持生产中的应用程序:

更新1

我最近发现的另一个相关项目:

更新2

最新版本Openstack包含对管理Docker容器的支持:

更新3

管理Docker实例的系统

关于如何使用Packer,Docker和Serf等工具来提供不可变服务器基础架构模式的演示文稿

更新4

关于如何使用serf

将docker容器连接在一起的简洁文章

更新5

使用Mesos框架

Marathon上运行Docker

Mesosphere Docker Developer Tutorial

更新6

Tsuru上运行Docker,因为它支持docker-clustersegregated scheduler deploy

更新7

基于Docker的环境编排

maestro-ng

更新8

decking.io

更新9

Google kubernetes

更新10

Redhat重构了他们的openshift PAAS以集成Docker

更新11

Docker NodeJS lib包装Docker命令行并从json文件管理它。

更新12

亚马逊的新container service支持在群集中进行扩展。

更新13

严格来说Flocker不会“扩展”应用程序,但它旨在实现一个相关的功能,即使多个docker主机上的状态容器(运行数据库服务?)可移植:

https://clusterhq.com/

更新14

用于创建描述Docker应用程序的可移植模板的项目:

http://panamax.io/

更新15

Docker项目现在正在解决编排问题(参见announcement

更新16

Spotify Helios

另见:

更新17

Openstack项目现在有一个名为Magnum的新“容器即服务”项目:

显示了许多承诺,可以轻松设置Docker编排框架,如Kubernetes和Docker swarm。

更新18

Rancher是一个快速成熟的项目

http://rancher.com/

精美的用户界面以及对混合Docker基础架构的强烈关注

更新19

Lattice project是Cloud Foundry的一个分支,用于管理容器群集。

更新20

Docker最近收购了Tutum:

https://www.docker.com/tutum

更新21

部署在Kubernetes上的应用程序的程序包管理器。

http://helm.sh/

更新22

Vamp是一个开源和自托管平台,用于管理依赖容器技术的(微)面向服务的体系结构。

http://vamp.io/

更新23

分布式,高可用性,数据中心感知调度程序

来自给我们Vagrant和其他强大工具的人。

更新24

AWS的容器托管解决方案,开源并基于Kubernetes

https://supergiant.io/

更新25

位于德国的基于Apache Mesos的容器

https://sloppy.io/features/#features

Docker Inc.还提供名为Docker cloud的容器托管服务

https://cloud.docker.com/

更新26

Jelastic是托管的PAAS服务,可自动扩展容器。

答案 1 :(得分:42)

Deis自动扩展Docker容器(以及其他内容)。

Deis(发音为DAY-iss)是一种开源PaaS,可以轻松地在您自己的服务器上部署和管理应用程序。 Deis构建于DockerCoreOS之上,以提供具有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的明智方法可能是:

  1. 每项服务都是 docker 容器
  2. 通过链接(new feature from docker 0.6.5
  3. 管理的内部容器服务发现
  4. 将通过Dokku
  5. 部署容器
  6. 应用程序将通过Shipyard管理,而hipache又使用cocaine
  7. 来自Yandex的另一个docker开源项目:

    • {{3}}

答案 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项目似乎非常有希望:

https://github.com/newrelic/centurion

答案 7 :(得分:1)

另请查看etcdConsul

答案 8 :(得分:1)

巴拿马型:人类的码头管理。 panamax.io

图:使用Docker的快速,隔离的开发环境。 fig.sh

答案 9 :(得分:1)

其他帖子中未提及的一个选项是Helios。它是由spotify构建的,不会尝试做太多。

https://github.com/spotify/helios