私がこのアイデアに慣れてから1年もかかりましたが、今は十分に単純なようです。
私は、人々がDockerを「仮想マシン」と呼ぶのは正確ではないという事実から来ていると思います。これは本当にシーンの裏で何が起きているかのニックネームです。多くの点で、DockerはVMWareなどの完全な仮想化ソリューションを置き換えることはありません。しかし、それはインフラストラクチャについての新しい考え方を生み出します。多くの人が頭を包み込むのに苦労している人がいます。
あなたは自分自身に尋ねることができます。
カーネル以外のものは、バイナリ、ライブラリ、実行時および構成ファイルを整理するための "標準的な方法"に過ぎません。/binにバイナリ、/ libにあなたのライブラリ、/ etcにあなたの設定が必要です。ユーザーインストールは/ usrの下に置かれます。
ほとんどのディストリビューションは、UNIX構造のメイン構造を維持し、独自の特徴を追加します。それぞれには、パッケージを管理し、配布する独自の方法があります。それぞれライブラリ、ドライバなどの独自のバージョンを維持します。
重要なのはカーネルです。それは彼らが共通して持っているものです。今日、Linuxカーネルの最近のビルドは、利用可能なすべての主要なディストリビューションと互換性があります。したがって、/ bootを除いて、他のほとんどのものは、適切な権限を持つ正しい場所に適切なファイルを置いておくだけの問題です。
ここで、すべての配布バンドル(カーネルを除く)を取り出し、実行中のOSの別のディレクトリに配置するとします。すでに実行しているのと同じカーネルを利用して、新しいプロセスを分離して、それがそのディレクトリであると「考える」ようにします。ビンゴ!このプロセスは現在、別のオペレーティングシステム上でそれ自身ですべて実行されていると「考える」。
DockerはLinux Containersの上に構築されています。これにより、私たちはそれほど楽観的ではなく、よりやさしく簡単な方法で行うことができます。仮想マシンとは考えないでください。プロセス分離と考えることができます。実行中のカーネルは、システムの残りの部分から独立した状態に保ちながら、このプロセスとマシンのリソースを共有します。ステロイドの場合はjailsのようです。
これは広く簡略化されています。しかし、コンセプトを考えれば、このアイデアの意味を考えてみてください。
完全に異なる環境で複数のプロセスが競合する可能性がある複数のプロセスを同じホスト上に持つことができます。古いライブラリを必要とするレガシーバイナリ(死んではいけないレガシーシステム)があります。もう一つは、最新の先端技術の最新のビルドであるかもしれません。同じカーネルを共有することは、効率的で貴重なリソース管理です。
私が見つけた最も価値は、インフラストラクチャの管理にあります。 Dockerをホストにインストールし、swarmを設定し、コンテナをデプロイする方法を定義したら、主にホストについて忘れてしまいます。ユーザーの追加、パッケージのインストール、カスタマイズ、設定ファイルの編集...デスクトップ上での開発作業となるものすべて。より多くをスクリプト化し、より多くを自動化するインセンティブがあります。絶対に必要な場合を除き、物理マシンまたは仮想マシンから手を離します。
誰かが気まぐれなアプリケーションの動作を回避するためにサーバーの設定を変更して、誰にも知らせずに休暇を取った日もありません。環境への変更は、チームの全員がバージョン管理、追跡、改善することができます。データセンターが災害を起こした場合、環境全体を再作成することは、イメージの再構築とコンテナの再デプロイメントの問題です。インフラストラクチャーの一貫性と再現性が向上し、幅広いオペレーティングシステムと各アプリケーションのカスタマイズされた構成が可能になります。
開発者はデスクトップ上の開発/ステージング/運用環境を再作成する機能を利用してDockerを利用できます。アプリケーションサーバーとデータベースのインストール、またはVirtualBoxの料金の払い戻しなど、開発者マシンをすべてエミュレートする必要はありません。
より高いレベルの分離で試験を自動化することができます。セレンのチームはすでにofficial Docker imagesです。テストハブ全体を作成するには、それらの子犬を持つ公園内を散策する必要があります。
Nginxをサードパーティのモジュールでコンパイルするなどのカスタムソフトウェアの構築は、特殊な画像からコンテナ内で行うこともできます。サーバ全体を専用に保つ必要はなく、すべての依存関係とパッケージを構築してデスクトップを守る必要もありません。
全体として、私たちはDockerの素晴らしい経験をしてきました。ステージング環境をこの新しいプラットフォームに移行し、インフラストラクチャの他の部分も最終的に本番環境に移行する予定です。ここまでは順調ですね。
私はあなたに十分な人々がそれをよく見て納得できることを願っています。私は、そのアイデアに慣れるまでにはいつか私を受け入れたことを認めます。しかし、一度それを得る、それは実際にそれの価値がある。