私は this と Docker.ioの紹介ドキュメント を読みましたが、それが示す概念が気に入っています。しかし、少しよく理解してもらえますか? Dockerがどのように使用され、実際にそれを使用することが理にかなっている場合について、いくつかの実用的な例やケーススタディを教えていただけますか?
余談ですが、私は最近、Vagrantを使用して、事前設定されたDEVボックスを開発チームに配布し始めました(そのため、すべて同じベースシステムを使用しています)。私はDockerがVagrantの中で使用されている例も見たことがありますが、実用的な意味でこれを行う利点はありません。 VMとコンテナーの違い、および後者が提供する論理的な分離を理解していることを意味しますが、他の代わりにどちらを使用する必要があり、Docker inside Vagrantを使用する必要があるのですか? (これはより具体的な質問ですが、上記の最初の質問で概説されているように、より大きな全体像に主に興味があります)。
私は科学分析を行うためのソフトウェアを研究コミュニティがより利用できるようにする取り組みに参加しています。多くの場合、問題のソフトウェアは、再利用の計画が不十分な1人または少数のユーザーによって作成されます。たとえば、自分のコンピューターで1人がPythonスクリプトまたはMatlabモジュールを作成するなど)。うまく機能し、多くの場合、他の人が自分で試してみたいと思いますが、文書化されていない、または再実装が困難な環境を正常に複製することは、場合によっては本当の課題となります。
Dockerは、環境にソフトウェアをインストールするためのVagrantスクリプトを作成するよりもエントリの障壁が低いため、他の人がこのようなソフトウェアを再利用するのに役立つ優れたツールです。私が人にDockerコンテナーを与えると、彼女はコンテナー内でやりたいことをすべて実行できます(コードの記述、ライブラリーのインストール、環境のセットアップなど)。それが「完了」したら、彼女はそのイメージを保存して、そのイメージをDockerリポジトリーを使用して、別の研究者に「ここにあります。起動して実行してください...」と伝えます。
また、本番ソフトウェアを配信およびアーカイブするための独自の構成管理戦略としてコンテナを使用することも検討しています...少なくともサーバー側のコンポーネント。
また、PythonおよびShellでスクリプトを記述して複数のDockerコンテナのデータ処理ワークフローを実行する作業も行っています。私たちが作成した1つのデモは、画像でOpenCVを実行して人物の顔を抽出することでした。次にImageMagickで顔を切り取り、最後にもう一度ImageMagickですべての顔のコラージュを作成します。OpenCVのコンテナとImageMagickのコンテナを作成し、Pythonスクリプトを実行して各コンテナで必要なパラメータを使用した「docker run ...」Pythonスクリプトは docker-py プロジェクトを使用して実行されました。私たちはそれから必要でした。
ケーススタディについては、「 SpotifyがDockerを使用する方法と理由 」を参照してください。
最後の質問に答えるには:
私はDockerがVagrantの中で使用されている例も見たことがありますが、実用的な意味でこれを行う利点はありません。つまり、VMとコンテナーの違い、およびVMとコンテナーの論理的な分離については理解していますが、一方を他方の代わりに使用する必要があり、DockerがVagrant内にあるのはいつですか?
DockerはVagrant内で頻繁に使用されます。これは、Mac OSXで現在実行されていないためです( カーネル要件 を参照)。これは、開発者によって非常に一般的に使用されています。
次に、開発チームが同じコンテナで作業し、ラップトップで製品をビルドしてテストし、後で「大規模、本番環境、VM、ベアメタル、OpenStackクラスター、パブリッククラウドなどで」実行するには、次のものが必要です- Mac OSXのVagrant 。
とはいえ、ここでは別の素晴らしいケーススタディを見ることができます http://bit.ly/19h8gUk
Nice docker hack dayのユースケースがあります:
Java GitとJenkinsを使用したスタックの自動デプロイ。コードをコンテナ化されたgitリポジトリにプッシュします。これにより、Jenkinsビルドがトリガーされ、webappがContainer Dockerにパッケージ化され、 Dockerによって実行されます。