今回から2回に渡り、Dockerの概要から基本的な使い方の説明までを行います。なお、Dockerの使い方の説明については全てCentOS7での操作手順となります。
Docker(ドッカー)とは
Dockerは、Solomon Hykes氏が開発したコンテナ型仮想化の技術です。
Dockerでは、単純にコンテナ型仮想化を実現しているだけではなく、設定済みのコンテナをリポジトリに登録し、配布することができます。
Dockerのリポジトリは、インターネット上でも公開されていて、様々な定義済みのイメージを入手することができます。
Dockerでは、まずリポジトリからイメージを入手します。イメージは、いわば必要なファイルのアーカイブです。コンテナは、このイメージと、その上で動作させるアプリケーションをセットにして起動します。逆に言えば、それ以外のプログラムは一切動作しません。
コンテナ型仮想化
Dockerがどんなものかひとことで言ってしまえば、「アプリケーションを動かす環境を簡単に作れるツール」です。
Dockerを導入して、Webアプリケーションを開発しておけば、ミドルウエア設定やライブラリなどもすべて含めて、現在のサーバの開発環境と全く同じ環境を、別のサーバ上で動かすことができます。
ハイパーバイザー型の仮想化とコンテナ型の仮想化の違い
サーバ仮想化の手段として広く使われているのは、ハイパーバイザーを使った仮想化です。ハイパーバイザーとは、仮想化を実現するソフトウェアのことで、ハードウェアに搭載されているプロセッサーやメモリ、ストレージの容量を細かく分割して複数のユーザーに割り当てる機能を持っています。
「サーバ仮想化」を実現するもう1つのやり方として、コンテナを使う方法があります。この方法は、1つのOSにコンテナといわれる「独立したサーバと同様の振る舞いをする区画」を複数作り、それを個別のユーザーやサービスに割り当てます。利用するユーザーやサービスから見れば、別々のサーバがあたかも独立した個別サーバであるかのように見える点は、ハイパーバイザーを使う場合と同様です。異なるのは、同じOS上で実現するので、全てのコンテナは同じOSしか使えない点です。
ハイパーバイザー型の仮想化とコンテナ型の仮想化の違いをまとめると下記のようになります。
Dockerの利点
・動作が軽い
利点として動作が非常に軽いということが挙げられます。
従来の仮想化技術はやはり物理環境と比較すると「起動が遅い」「処理速度が落ちる」といった弊害がありました。
OS上のアプリケーションを操作する場合、ハードウェア仮想化においては、仮想化されたハードウェアおよびハイパーバイザーを経由して処理が行われます。この経由している分だけ、通常の物理マシンよりも処理に余分な時間(オーバーヘッド)を要します。
一方で、コンテナ型仮想化はカーネルを共有しており、各プロセスが処理を行うのと同じ程度の時間しかかからないため、ほとんどオーバーヘッドがありません。
・どこでも使える
もう一つの利点としては、どこでも使えるという点が挙げられます。
Linuxカーネルを使っている環境の上であればどこでも動作するため、プラットフォームを意識することなく利用できます。
例えば、AWSのイメージをGoogleのクラウドに移動させる機能などは、各クラウドベンダーでは実装されていませんが、Dockerでイメージのやり取りをすることによって、異なるプラットフォーム間でイメージを共有できます。
Dockerの欠点
Docker 上のコンテナはホストの kernel をそのまま利用します。 そのため、kernel を共有できる Red Hat Enterprise Linux や Ubuntu は共存できるものの、根本的に kernel の異なる Windows Server はホストとなる Linux 上で動かすことはできません。
HyperVisor 型の仮想化はゲストの Kernel 自体も仮想的に動作させるため、Linux 上で Windows を動かしたり、またその逆も実現可能です。
これらの特徴から、Docker には以下の様な欠点があると言えます。
- 提供できるホストの種類が少ない(Windows Serverはできない)
- 完全仮想化に比べて、管理者が学ぶべきことが多い
Dockerの設定方法
Dockerの使い方についての説明に入ります。基本的な操作については次回の記事で紹介しますので、本記事ではインストールして起動するまでの手順を紹介します。
設定の流れ
- Dockerをインストール
- リポジトリからイメージを入手
- イメージを起動
インストール
Dockerを利用するためには、dockerパッケージをインストールする必要があります。CentOS7のインストールDVDには同梱されていませんが、CentOSの標準インストールで利用可能ですので、yumコマンドを使ってインストールすることができます。
サービスの起動
Dockerを使うためには、サービスを起動する必要があります。CentOSにおけるDockerのユニット名は、docker.serviceです。dockerは、スタンドアロンのデーモンプロセスとして常駐します。
サービスの自動起動
dockerパッケージをインストールした時点では、dockerサービスは自動的に起動されるように設定されていません。dockerを自動的に開始したい場合には、自動機能の設定を行って下さい。
サービスの手動制御
dockerは、systemdによって管理されます。そのため、systemctlコマンドを使って制御することができます。なお、docker.serviceは、reloadコマンドをサポートしていません。
次回は、Dockerの基本操作について詳しく紹介します。それでは!