2017-03-01 4 views
1

新しいアプリケーションでコンテナの使用を検討していて、かなりの量のコンテンツを見て、ドッカーとコンテナを探索するためのサンドボックス環境を作成しました。私の苦労は、コンポーネントを個別にコンテナ化する必要があるか、複数のコンポーネントを自分のコンテナに束ねるかを理解することです。これを設計する際には何を考慮すべきでしょうか? 例: 私は、Webサービス呼び出しによって実行されるPythonバックエンドサービスを構築しています。 サービスはMongo DBとRabbitMQの両方とやりとりします。「コンテナ化」するコンポーネント - Docker

私の質問は次のとおりです: 個々のOSコンテナ(EG Ubuntu)、Pythonコンテナ、MongoDBコンテナ、Rabbit MQコンテナなどを実行する必要がありますか?それらはすべて私のアプリケーションの一部を構成し、私は個別に拡張する能力を持っているすべてのものを切り離します。

どのように私は/バンドルすることができるだろうが

が、これはすべてのpythonとOS上で実行されますよう、実際に必要なOSやPythonのコンテナである個々の容器に分解/デカップリングの利点を失うことなく、展開のためにこれらのリンクいずれかの方法?

人々がこの問題にどのように近づいてきたかを知りたいですか?

答えて

1

ドッカーの哲学:容器にマイクロサービスを使用する。 「Microservice Architecture」という用語は、independently deployable servicesのスイートとしてソフトウェアアプリケーションを設計する特定の方法を説明するために、ここ数年に誕生しました。

microservices architectureのいくつかの利点があります:

  • 簡単なアップグレード管理
  • が向上障害分離
  • は、それが簡単に新しい開発者が理解できるようになり
  • 単一技術スタックへの長期的なコミットメントを排除しますサービスの機能
  • セキュリティの向上
  • ...

私は、個々のOSコンテナ(EG Ubuntuの)、Pythonのコンテナ、 MongoDBのコンテナ、ウサギMQコンテナなどを実行すべきか?それらはすべて私のアプリケーションの一部である の一部を構成し、能力を持っているすべてを切り離すことによって、 は個別にスケールすることができますか?

個々のOS管理者は必要ありません。各コンテナはDockerホストのカーネルを使用し、必要なバイナリ、例えばPythonバイナリのみを含みます。

だから、pythonコンテナ、pythonサービス、MongoDBコンテナ、RabbitMQコンテナがあります。

どのように私は、個々の容器に分解/デカップリングの メリットを失うことなく、展開のためにこれらをリンク/バンドルすることができるだろうか?

展開の場合は、dockerfiles + docker-composeファイルを使用します。ドッカーファイルには、ドッカー画像を作成するための指示が含まれています。公式のライブラリイメージを使用しているだけの場合は、dockerfilesは必要ありません。

docker-composeは大きな反響を、あなたはコンテナが(ドッカファイルから)を構築するオーケストレーションを助けるアップを開始し、必要なネットワークを作成し、必要なボリュームをマウントし、など

+0

う - ありがとう – user3927078

関連する問題