139

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

Docker 是一个开源项目,可以轻松地从任何应用程序创建轻量级、可移植、自给自足的容器。开发人员在笔记本电脑上构建和测试的同一个容器可以在生产环境、虚拟机、裸机、OpenStack 集群、公共云等上大规模运行。

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

4

10 回答 10

598

更新:2019-03-11

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

请注意,这个问题是在 2013 年 8 月提出的,当时 Docker 还是一项非常新的技术。从那时起:Kubernetes于 2014 年 6 月推出,Docker swarm于 2015 年 2 月集成到 Docker 引擎中,亚马逊于2015 年 4 月推出其容器解决方案 ECS,谷歌于 2015 年 8 月推出 GKE。可以说生产容器环境已经发生了很大的变化。


简短的回答是您必须编写自己的逻辑来执行此操作。

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

更新 1

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

更新 2

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

更新 3

用于管理 Docker 实例的系统

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

更新 4

一篇关于如何使用serf将 docker 容器连接在一起的简洁文章:

更新 5

使用Marathon框架在Mesos上运行 Docker

Mesosphere Docker 开发者教程

更新 6

在Tsuru上运行 Docker,因为它支持docker-cluster隔离调度程序部署

更新 7

基于 Docker 的环境编排

大师

更新 8

装饰.io

更新 9

谷歌Kubernetes

更新 10

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

更新 11

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

更新 12

Amazon 的新容器服务支持在集群中进行扩展。

更新 13

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

https://clusterhq.com/

更新 14

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

http://panamax.io/

更新 15

Docker 项目现在正在本地解决编排问题(请参阅公告

更新 16

Spotify Helios

也可以看看:

更新 17

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

显示出很多希望,可以轻松设置 Kubernetes 和 Docker swarm 等 Docker 编排框架。

更新 18

Rancher是一个正在迅速成熟的项目

http://rancher.com/

漂亮的用户界面和对混合 Docker 基础设施的强烈关注

更新 19

Lattice 项目是 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 服务,可以自动扩展容器。

于 2013-08-17T09:19:34.887 回答
42

Deis自动扩展 Docker 容器(除其他外)。

Deis(发音为 DAY-iss)是一种开源 PaaS,可以轻松地在您自己的服务器上部署和管理应用程序。Deis 以DockerCoreOS为基础,提供了一个轻量级的 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 自动在 CoreOS 集群中部署您的 Docker 容器,并配置 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

于 2013-08-20T00:33:05.690 回答
19

你可以试试鹤。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/

于 2014-04-10T01:41:33.573 回答
18

看看Rancher.com - 它可以管理多个 Docker 主机等等。

于 2015-03-20T15:25:55.317 回答
9

扩展 Docker 的明智方法可能是:

  1. 每个服务都是一个docker容器
  2. 通过链接管理的内部容器服务发现(来自 docker 0.6.5 的新功能
  3. 容器将通过Dokku部署
  4. 应用程序将通过Shipyard管理,而 Shipyard又使用hipache

Yandex 的另一个 docker 开源项目:

于 2013-11-27T15:48:57.297 回答
2

Openshift 的人也创建了一个项目。您可以在此处找到更多信息,在此处尝试测试容器和详细信息。唯一的问题是解决方案目前以 Redhat 为中心 :)

于 2014-04-19T10:55:20.657 回答
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

于 2014-07-25T17:23:57.247 回答
1

看看etcdConsul

于 2014-09-01T12:37:19.933 回答
1

Panamax:人类的 Docker 管理。巴拿马

图:使用 Docker 的快速、隔离的开发环境。无花果.sh

于 2014-09-05T21:07:57.543 回答
1

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

https://github.com/spotify/helios

于 2015-03-24T20:02:29.917 回答