所以我最近发现了这个很棒的工具,它说
Docker 是一个开源项目,可以轻松地从任何应用程序创建轻量级、可移植、自给自足的容器。开发人员在笔记本电脑上构建和测试的同一个容器可以在生产环境、虚拟机、裸机、OpenStack 集群、公共云等上大规模运行。
假设我有一个运行 Nginx 的 docker 映像,并且一个网站连接到外部数据库。如何在生产中扩展容器?
所以我最近发现了这个很棒的工具,它说
Docker 是一个开源项目,可以轻松地从任何应用程序创建轻量级、可移植、自给自足的容器。开发人员在笔记本电脑上构建和测试的同一个容器可以在生产环境、虚拟机、裸机、OpenStack 集群、公共云等上大规模运行。
假设我有一个运行 Nginx 的 docker 映像,并且一个网站连接到外部数据库。如何在生产中扩展容器?
首先感谢那些多年来一直支持这个答案的人。
请注意,这个问题是在 2013 年 8 月提出的,当时 Docker 还是一项非常新的技术。从那时起:Kubernetes于 2014 年 6 月推出,Docker swarm于 2015 年 2 月集成到 Docker 引擎中,亚马逊于2015 年 4 月推出其容器解决方案 ECS,谷歌于 2015 年 8 月推出 GKE。可以说生产容器环境已经发生了很大的变化。
简短的回答是您必须编写自己的逻辑来执行此操作。
我希望这种功能会出现在以下项目中,这些项目建立在 docker 之上,旨在支持生产中的应用程序:
我最近发现的另一个相关项目:
最新版本的 Openstack 包含对管理 Docker 容器的支持:
用于管理 Docker 实例的系统
以及如何使用Packer、Docker 和Serf等工具来提供不可变的服务器基础架构模式的演示文稿
一篇关于如何使用serf将 docker 容器连接在一起的简洁文章:
在Tsuru上运行 Docker,因为它支持docker-cluster和隔离调度程序部署
基于 Docker 的环境编排
Redhat 重构了他们的 openshift PAAS 以集成 Docker
包装 Docker 命令行并从 json 文件管理它的 Docker NodeJS 库。
Amazon 的新容器服务支持在集群中进行扩展。
严格来说,Flocker不会“扩展”应用程序,但它旨在实现使有状态容器(运行数据库服务?)可跨多个 docker 主机移植的相关功能:
一个创建描述 Docker 应用程序的可移植模板的项目:
Docker 项目现在正在本地解决编排问题(请参阅公告)
也可以看看:
Openstack 项目现在有一个名为 Magnum 的新“容器即服务”项目:
显示出很多希望,可以轻松设置 Kubernetes 和 Docker swarm 等 Docker 编排框架。
Rancher是一个正在迅速成熟的项目
漂亮的用户界面和对混合 Docker 基础设施的强烈关注
Lattice 项目是 Cloud Foundry 的一个分支,用于管理容器集群。
Docker 最近收购了 Tutum:
部署在Kubernetes上的应用程序包管理器。
Vamp 是一个开源和自托管平台,用于管理依赖于容器技术的(微)服务导向架构。
分布式、高可用性、数据中心感知调度程序
来自给我们 Vagrant 和其他强大工具的人。
适用于 AWS、开源并基于Kubernetes的容器托管解决方案
基于 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 自动在 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。
你可以试试鹤。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 主机等等。
扩展 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 项目似乎很有希望:
其他帖子中未提及的一个选项是 Helios。它是由 spotify 构建的,不会尝试做太多事情。