こんにちは、セブテク編集部です。
近年のWebにおける技術の進歩はめまぐるしく、日々新たな技術が生まれていますね。
今回この記事で触れるのはサーバー仮想化に用いられる「Docker」です。
数年前から注目を浴びていますが、今もなお注目され続けているプラットフォームの一つです。
サーバーに関する知識が初心者の方のためにも、サーバー仮想化の基本的な部分に触れつつ、「Docker」の特徴をみなさんに伝えていきます。
Dockerとは何か
Docker(ドッカー)はDecker Inc.によって開発された、コンテナと呼ばれるOSレベルの仮想化環境を提供する、オープンソースソフトウェアです。
それぞれの言葉の意味を掘り下げてみましょう。
- 「仮想化」はサーバーの仮想化という意味です。
- 「サーバーの仮想化」とは1台の物理的なサーバー上に、複数の仮想的なサーバーを利用できる仕組みを構築することを言います。
- 「コンテナ」とはサーバーの仮想化の手法の1つです。
つまり、Dockerはコンテナという技術を用いて、サーバーの仮想化を可能にするプラットフォームです。
このサーバーの仮想化にはいくつか手法が存在します。
Dockerの特徴に触れる前にどんな手法があるか見ていきましょう。
サーバーの仮想化の手法
サーバーの仮想化には主に3つの手法が存在します。
それぞれの特徴を見ていきましょう。
1.ホスト型仮想化
ホストとなるOS上で仮想化ソフトウェアを使い、別のゲストOSを運用する方法です。
ホストとなるOSとは利用しているPCのOSで、ゲストOSとは仮想化する別のOSのことです。
ホストOSは主にWindowsやLinuxとなります。
例として、ホストOSのWindows環境下に、ゲストOSであるMacを運用するといったものがあります。
ホストOSのアプリケーション下で運用できるため、ソフトウェアを採用するような手軽さで実現できるメリットがあります。
しかしながら、ゲストOSを動かすためにはホストOS自体の処理も必要となるため、処理速度はホストOSのスペックに比重してしまい、他の手法と比べて処理速度が出にくいのがデメリットです。
PC上で複数のOSを起動する..といった環境になりますので、処理が重いといったことは容易に想像できるかと思います。
2.ハイパーバイザー型仮想化
ハイパーバイザーという、ハードウェアが持つ仮想化支援機能を連携して、サーバー仮想化を実現するのがハイパーバイザー型仮想化です。
ホストOS下でゲストOSを運用しているホスト型仮想化に対し、ハイパーバイザー型はホストOSよりも上位の層からプログラムが実行されるのがホスト型との大きな違いです。
ホストOS上でプログラムが実行されないため、ホストOSを必要としません。
ホスト型と比べてOSの性能に速度が影響されにくいのが最大のメリットです。
しかしながら、仮想環境ごとにOSを丸ごとインストールする点はホスト型仮想化と変わらないため、環境構築に時間や手間がかかったり、複数のOSを立ち上げるという点ではホスト型と同様となります。
そのため、環境によっては速度に問題が生じる場合があります。
3.コンテナ型仮想化
ハードウェア上で稼働するホストOS上に、論理的な区画(コンテナ)を作り、それぞれに独立したOS環境を提供します。
実際に動作しているのはあくまで単一のOS(ホストOS)のみですが、アプリケーションの動作に必要なライブラリなどをコンテナ内に閉じ込めることで、あたかも個別のサーバーのように使えるようにします。
コンテナはホストOSから見ると単一のプロセスであるため、環境によって速度が圧迫されることがありません。
他の手法よりも軽量で高速に動作するため、近年主流となってきている仮想化技術です。
今回紹介する「Docker」は、この手法を採用しています。
Dockerの特徴
Dockerは「コンテナ型仮想化」を採用したオープンソースソフトウェアです。
設定ファイルや必要なライブラリ等も、Dockerのコンテナ内に固めることができるため、コンテナを通じて仮想環境ごと共有することが可能です。
コンテナの内容は「Dockerファイル」と呼ばれるファイルにコードとして記述されていることから、ファイルを共有することで誰でも同じ環境が作れます。
また、一度固めたコンテナは軽量であるため、比較的どの環境でも素早くアプリケーションを動作させることができます。
このように「軽量」であることや、環境ごとコンテナに固め、Dockerファイルを通じて共有することができる「利便性」から、近年Dockerが選ばれています。
さいごに
今回はサーバーの仮想化技術に触れながら、Dockerについて説明しました。
Dockerはオープンソースソフトウェアであるため、誰でも利用することができます。
また、近年注目されている技術のため、導入方法や活用事例などインターネット上にたくさん情報があります。
この記事でご興味を持たれた方は、ぜひDockerに触れてみてくださいね。