ブレーンアシストオンライン

仮想化ソフトウェア「Docker」って何?

仮想化ソフトウェア「Docker」

最近よく聞くDockerですが、そもそもDockerとは仮想化ソフトウェアの一つで、コンテナ型の仮想環境を実現するソフトウェアです。Huper-vや Vmwareなどの仮想化ソフトウェアはホスト型、ハイパーバイザー型と言われています。コンテナ型との違いを説明します。

ホスト型

ホスト型はホストOS上に導入することでゲストOSとしてLinuxやWindowsなどの複数のOSの仮想環境を構成します。「VMware Workstation Player」「VMware Fusion」「Oracle VM Virtualbox」などがあります。

ハイパーバイザー型

ハイパーバイザー型はホストとは違いホストOSが不要でハイパーバイザー自体が仮想化のためのOSのようなものでそのOS上にホスト型同様にゲストOSを構成できます。「Microsoft Hyper-V」「Vmware ESXi」「Linux KVM」「Citrix Xen Server」「Red Hat Enterprise Virtualization(RHEV)」などがあります。

コンテナ型

コンテナ型はホストOS上に導入しますが、ホスト型のようにゲストOSを構成するのではなく、アプリケーション実行環境を構成することができます。「Docker」「Linux(LXC)」「Kubernetes」「Virtuozzo」「OpenVZ」などがあります。

コンテナ自体はOSでは無いのですが、これはカーネルがコンテナには存在しないからです。カーネルはホストOSのカーネルを直接利用するのでアプリケーションが必要とする最低限のライブラリなどが構成されていれば問題ないのです。そのため、コンテナには余計なカーネルが無い分CPUやメモリなどのリソースが軽量で起動が早い。ホスト型、ハイパーバイザー型で構成されたOSに比べ圧倒的に処理が速い。物理サーバと同等な処理速度を実現できます。

また、運用管理についてもホスト型、ハイパーバイザー型の場合OSがどうしても複数存在してしまう構成になるため、セキュリティや、更新ファイルのアップデートなどの管理はホスト、ゲストすべてのOS分必要になり手間になります。その点コンテナ型の場合はあくまでもホストOS1台のため管理はOS1台のみです。

特にDocker はLinuxカーネルが持つ「namespaces」「cgroups」「overlayfs」という機能を使いプロセスやファイルシステム、ユーザーIDなどが分離された空間を同一OS上に複数つくることができ、外部からはコンテナ毎に独立したコンピュータに見えるため人気となっているようです。クラウドでもリソースが軽量のため相性は抜群です。AWS, GCP, Azure といった世界的なクラウドサービスがいち早く取り入れました。

コンテナ環境の構築についても、比較的容易で、コピーも簡単にできてしまうところも人気の一つです。開発環境を複数必要な場合は容易に構築できるため効率的です。

ここまで良い事ばかりのDockerですが、デメリットもそれなりに存在しています。

・ホストOSと異なるシステムのコンテナは使えない。
・複数の異なるディストリビューションは導入できない。
・カーネルを全て共有するため個別変更ができない。
・比較的新しい技術のため学習コストが掛かる。

Docker Desktop for Windows

そんなDocker ですがWindows上で環境を作ることができる Docker Desktop for Windows があります。無料でインストールできるため、人気のDocker を勉強するには比較的簡単に構築できるのでおすすめです。なお、無料の条件は以下のようになります。

スモールビジネス(従業員数250名未満かつ年間売上高1000万ドル未満(訳注:1ドル110円換算で11億円)、個人利用、教育機関、非商用のオープンソースプロジェクトであれば、無料。250名以上もしくは11億円以上の企業の場合は有料となりますが、月額5ドルの「Pro」、月額7ドルの「Team」、月額21ドルの「Business」の3種類。

インストール

https://www.docker.com/products/docker-desktop

導入手順については別の機会にと思いますが、ネット上でDockerイメージを無料公開している Docker HubというサイトからCentOS7などのコンテナの元となる
OS、アプリケーションがパッケージ化された環境イメージを取得することで容易にWindows環境でPowerShellを利用してCentOSを利用することができました!

まとめ

この先クラウド進出していくのであればDockerは必ず出てくるワードになるかと思います。Dockerについては考え方や独自なコマンドもあるので今のうちに勉強して未来の自分への投資をしてはいかがでしょうか。

 

DockerおよびDockerのロゴはDocker,Inc.の米国およびその他の国における商標または登録商標です。