本番環境でDockerコンテナーをスケーリングする方法


139

だから私は最近この素晴らしいツールを発見しました、そしてそれは言う

Dockerは、任意のアプリケーションから軽量、ポータブル、自己完結型のコンテナーを簡単に作成するためのオープンソースプロジェクトです。開発者が構築してラップトップでテストするのと同じコンテナを、VM、ベアメタル、OpenStackクラスター、パブリッククラウドなどで、本番環境で大規模に実行できます。

Nginxを実行するDockerイメージがあり、Webサイトが外部データベースに接続しているとしましょう。本番環境でコンテナをスケーリングするにはどうすればよいですか?

回答:


586

更新:2019-03-11

まず何年にもわたってこの回答に賛成してくださった方々に感謝します。

この質問は2013年8月、Dockerがまだ非常に新しいテクノロジであったときに行われたことに注意してください。それ以降:Kubernetesは2014年6月に発売され、Docker swarmはDockerエンジンに2015年2月に統合され、AmazonはそのコンテナソリューションであるECSを 2015年4月に発売しGoogleはGKEを2015年8月に発売しました。大幅に変更されました。


簡単に言えば、これを行うには独自のロジックを記述する必要があります。

この種の機能は、Dockerの上に構築され、本番環境のアプリケーションをサポートするように設計された次のプロジェクトから出現することを期待しています。

アップデート1

私が最近発見した別の関連プロジェクト:

アップデート2

最新リリースのOpenstackには、Dockerコンテナーの管理のサポートが含まれています。

アップデート3

Dockerインスタンスを管理するためのシステム

また、パッカー、Docker、Servなどのツールを使用して不変のサーバーインフラストラクチャパターンを提供する方法に関するプレゼンテーション

アップデート4

serfを使用してDockerコンテナーを相互接続する方法についてのきちんとした記事:

アップデート5

Marathonフレームワークを使用してMesosで Dockerを実行する

Mesosphere Docker開発者向けチュートリアル

アップデート6

Docker -cluster分離されたスケジューラーのデプロイをサポートしているため、DockerをTsuruで実行します。

アップデート7

Dockerベースの環境のオーケストレーション

maestro-ng

アップデート8

ecking.io

アップデート9

Google Kubernetes

アップデート10

RedhatはDockerを統合するためにOpenshift PAASをリファクタリングしました

アップデート11

Dockerコマンドラインをラップし、jsonファイルから管理するDocker NodeJS lib。

アップデート12

Amazonの新しいコンテナーサービスは、クラスターでのスケーリングを可能にします。

アップデート13

厳密に言えばFlockerしない「スケール」アプリケーションを、それは(データベースサービスを実行している?)ポータブル複数のドッキングウィンドウのホスト間でステートフルコンテナを作る関連機能fufilに設計されています。

https://clusterhq.com/

アップデート14

Dockerアプリケーションを記述するポータブルテンプレートを作成するプロジェクト:

http://panamax.io/

アップデート15

Dockerプロジェクトがオーケストレーションにネイティブに対応するようになりました(発表を参照)

アップデート16

Spotify Helios

以下も参照してください。

アップデート17

Openstackプロジェクトには、Magnumと呼ばれる新しい「サービスとしてのコンテナー」プロジェクトがあります。

多くの可能性を示し、KubernetesやDocker swarmなどのDockerオーケストレーションフレームワークの簡単なセットアップを可能にします。

アップデート18

ランチャーは急速に成熟しているプロジェクトです

http://rancher.com/

素敵なUIとハイブリッドDockerインフラストラクチャに重点を置いた

アップデート19

ラティス・プロジェクトは、コンテナクラスタを管理するためのクラウドファウンドリーの分派です。

アップデート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クラウドと呼ばれるコンテナホスティングサービスも提供しています

https://cloud.docker.com/

アップデート26

Jelasticは、コンテナーを自動的にスケーリングするホストされたPAASサービスです。


1
openstackはこのリストのもう1つの候補です
ben

@benschwartz非常に真実ですが、最新のリリースでのみです。
Mark O'Connor

わあ、Dock–me—あなたはRockin Fockです!ありがとう!
jredd 2014年

2
@ MarkO'Connor mesosphere/mesos-dockerプロジェクトは非推奨になり、置き換えられましたmesosphere/deimosgithub.com/mesosphere/deimos
Ross Allen

1
Googleからもご覧になる
mjsalinger 2014

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はDockerコンテナーをCoreOSクラスター全体に自動的にデプロイし、リクエストを正常なDockerコンテナーにルーティングするようにNginxルーターを構成します。ホストが停止すると、コンテナは数秒で別のホストで自動的に再起動されます。プロキシ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デプロイしたりすることもできます


3
+1私は興味を持ってあなたのプロジェクトを見ています。今後ともよろしくお願いいたします。
Mark O'Connor

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/


18

見ていRancher.comを -それは、複数のドッカーホストおよび大いに多くを管理することができます。


Rancherはオープンソースであり、Kubernetesの完全なディストリビューションが含まれています。多くの異なるクラスターを実行し、インフラストラクチャを管理するためのプラットフォームを提供し、実行中のコンテナーを劇的に簡素化します。
シャノンウィリアムズ

9

Dockerをスケーリングする賢明なアプローチは次のとおりです。

  1. 各サービスはDockerコンテナーになります
  2. リンクを介して管理されるコンテナー内サービスの検出(docker 0.6.5の新機能
  3. コンテナーはDokkuを通じてデプロイされます
  4. アプリケーションは造船所を通じて管理され、造船所Hipacheを使用しています。

Yandexの別のdockerオープンソースプロジェクト:


造船所と一緒にドックを使用する方法について他にアドバイスはありますか?
djskinner


2

Openshiftの人たちもプロジェクトを作成しました。あなたはより多くの情報を見つけることができ、ここで試す、試験容器と、詳細な情報をここに。唯一の問題は、今のところRedhat中心のソリューションです:)


2

私たちはDeis(deis.io)の大ファンであり、積極的に展開していますが、次のような他のHerokuのようなPaaSスタイルの展開ソリューションがあります。

WayfinderのLongshoreman:

https://github.com/longshoreman/longshoreman

CloudFoundryを使用したCloudCredoのデッカー:

http://www.cloudcredo.com/decker-docker-cloud-foundry/

まっすぐなオーケストレーションに関しては、NewRelicのオープンソースのCenturionプロジェクトは非常に有望であると思われます。

https://github.com/newrelic/centurion



1

Panamax:人間のためのDocker管理。panamax.io

図:Dockerを使用した高速で分離された開発環境。fig.sh


Figはマルチホスト展開をまだサポートしていないと思います。
lolski 2014年

そうですか!では、単一のホスト内でのアプリケーションのセットアップを調整するのに役立つだけですか?
fatuhoku

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.