HPE Blog, Japan
1823391 メンバー
2316 オンライン
109654 解決策
新規ポスト
Yoji_Inoue

Dockerストレージ基礎編 (1)

最近伸びている企業が採用しているマイクロサービス、DevOpsには欠かせなくなってきたコンテナ技術。その中でもDockerは最も注目を浴びている技術です。今まではソフトウェア開発を中心に語られてきたDockerも、これから実際にサービスを運用するうえではストレージサービスの対応が重要になります。ということで、これから数回にわたりDockerストレージの基礎について解説していきたいと思います。

 

Dockerの効能

 本編では、コンテナやDockerの基本的なことについては解説しませんが、仮想化との違いを聞かれることが多いので簡単に説明すると、仮想化がサーバーを大量に迅速に配備するのに適しているのに対して、コンテナはアプリケーションを大量に素早く配備するのに適しています。それは、それぞれのアプリケーションを動かすのに必要な環境係数やライブラリ等がまるごとコンテナ内にパッキングされているために実現できるのですが、それ以外にも、大量に仮想マシンを運用するデータセンターでのハイパーバイザーのオーバーヘッドを小さくできること、アプリ実行までの時間が仮想化環境と比べて十倍以上速い等、コンテナを使うことで多くのメリットを享受できます。 このようなコンテナにも実は欠点もありました。従来は開発環境で使われることが多かったこともあり、ストレージ機能があまり充実していなかったことです。

 

ステートレスとステートフル

 コンテナのストレージ機能を説明するうえで、まず覚えておいてもらいたいのが「ステートレス」と「ステートフル」という言葉です。「ステートレス」というのは「状態を保存しない」状態で、逆に「ステートフル」というのは「過去の状態を記憶できる」ということを意味します。通常コンテナはステートレスなのですが、実運用を考えるとステートフルコンテナが必要になってきます。同様にPersisitent Storage (パーシステント・ストレージ)という表現も良く使われます。日本語に直訳すると「永続的ストレージ」ということになるのですが、なぜこれらが重要かというと、従来のDockerではコンテナを削除または移動すると、その関連データは削除され、また同じデータを作成する必要があったからなのです。開発環境ではそれで良くても、実際のサービスとして運用するには、データベースの利用も必要になりますから、コンテナが移動するごとに新しいデータストアの複製を作るのは非常に効率が悪いですし、データの一貫性もなくなります。これを解決する方法を具体的に紹介していくのですが、その前に、Dockerストレージの3つの種類について説明しておきましょう。

 

Dockerストレージの3パターン

 Dockerコンテナストレージには以下の3つがあります。

1) コンテナファイルシステム (揮発性ストレージ)

–Dockerコンテナ内のファイルシステム コンテナの削除・移動でデータが消える 

2) Docker ボリューム (永続的ストレージ)

–ホスト内のファイルシステムでコンテナにマップされる

–他のコンテナとの共有が可能だが、同一ホスト内でしか使用できない

3) Dockerボリュームプラグイン (永続的ストレージ)

–ダイナミックなマッピングが可能

他のホストのコンテナとも共有が可能

–NFS/CIFS または iSCSIに対応 

DockerStorageOptions.jpg

 次回はDockerボリュームプラグインとOpenStackで使われるFlockerについて解説していきます。

Dockerストレージ基礎編 第2回はこちら
http://ow.ly/cYKh30815Q9

 

 

 

 

 

 

0 感謝
作者について

Yoji_Inoue

Technology Evangelist, Composable Infrastructure, Software Defined Data Center and Cloud Technology Architect, Hyper Converged, Storage, Memory centric-Data driven computing, Specialist