Docker とは何か?
What Is Docker? An open platform for distributed apps
http://www.docker.com/whatisdocker/
Docker とは
Docker は開発者やシステム管理者向けのオープンなプラットフォームであり、構築(build)・出荷(ship)し、配付されたアプリケーションを実行(run)します。Docker エンジンを構成するのは、ポータブルで、軽量なランタイムとパッケージング用のツールです。そして、Docker Hub というアプリケーション共有と自動化ワークフローを行うクラウドサービスによって、Docker はアプリケーションをコンポーネントから迅速に構成するようにしたり、開発・QA(品質)・本番環境(Production environments)それぞれの間の摩擦を取り除きます。その結果、IT によって(Dockerによって?)、ノート PC やデータセンタの仮想マシンや、その他のクラウドでも、迅速な配置や、同じアプリケーションを、変更せずに実行出来ます。
Docker 社創設者&CTO による Docker 紹介ビデオ 7分16秒
開発(developers)から好かれる理由
開発者が Docker を使えば、あらゆる言語のアプリケーションや、様々な toolchain で構築できます。"Dockerized" (Docker 化) されたアプリケーションは、完全な携帯性(ポータビリティ)があるので、どこでも実行することができます。例えば、同僚の OS X と Windwos ノート PC や、クラウド上の Ubuntu で稼働する QA サーバや、プロダクション(本番用)のデータセンタで稼働する Red hat の仮想マシンです。
開発者は、Docker Hub 上で利用可能な、13,000 以上のアプリケーションのなかから1つのアプリを、迅速に使い始めることができます。Docker は、変更の追跡と依存関係を管理するので、システム管理者が、開発者がどのようにアプリケーションを構築しているかの理解が簡単になります。そして、Docker Hub を使う事で、開発者は構築パイプラインを自動化し、公開または非公開レポジトリを通して協力しながら、共有することができるのです。Docker は、開発者は高品質のアプリケーションの構築と出荷 (ship) を、素早く行えるのを助けます。
システム管理者(sysadmins)から好かれる理由
どうしてシステム管理者が好むのか?システム管理者が Docker を使う事で、開発や、QA や、プロダクションチーム向けの標準化された環境を提供する事ができるので、「自分のマシンで仕事する」時の課題を減らす事ができます。Docker 化されたアプリケーションのプラットフォームと、依存関係によって、システム管理者は、OS ディストリビューションと、下で動く基盤を切り離して管理できます。
さらに、Docker エンジンによる標準化によって、デプロイ単位で、システム管理者は柔軟にワークロードを走らせることができます。オンプレミスのベアメタルや、データセンタの仮想マシンや、パブリッククラウドのいずれであっても、インフラ基盤技術と、そこに含まれるビジネス優先度とポリシーによる作業負荷に縛られるのを減らします。その上さらに、Docker エンジンは軽量なランタイムによって、迅速なスケールアップやスケールダウンを、需要の変化に応じて出来るようにします。
Docker は、システム管理者があらゆるインフラ基盤において、迅速かつ信頼をもって、あらゆるアプリの展開と実行ができるのです。
仮想マシンとの違いとは?
仮想マシン
仮想化されたアプリケーションの中には、10 MB 程度のアプリケーションだけではありません。必要なライブラリやバイナリだけでなく、10 GB 以上の、ゲスト OS 全体も必要になるのです。
Docker
Docker エンジンが扱うコンテナは、アプリケーションと依存関係のあるもののみです。実行時のプロセスはホスト OS によって分離され、他のコンテナ間で kernel を共有します。つまり、リソースの分離と VM の便利さを持ちながら、可搬性(ポータビリティ)と効率性を持っています。