インフラ管理者のためのDocker解説【第3回】
押さえておきたいDockerの社内利用、メリット/デメリットを解説
Dockerは社内システムにも有用だ。Dockerを使ったインフラ整備におけるメリット/デメリット、用途の向き/不向きについて紹介する。
ここ1、2年注目が集まっている「Docker」だが、まだまだチャレンジングなプロダクトという位置付けに感じている方も多いだろう。しかしホストOS型(「VMware Fusion」や「VirtualBox」など)の仮想化技術はクラウドサービスや企業の業務システムで当たり前のように使われるようになっており、今後はコンテナ型も利用範囲が広がっていくことが予想される。
今回はDockerを使ったインフラ整備におけるメリット/デメリットに加えて、その利用方法を紹介していきたい。
Dockerで得られるメリット
ホストOS型仮想化に比べてリソースの消費が少ないのが、Dockerに代表されるコンテナ型仮想化の特徴である(1回で分かる:仮想化とは違うコンテナ技術「Docker」って何?)。通常のOSでサービスを立ち上げたりソフトウェアをインストールするのに比べて、主に以下のメリットがある。
セキュア
各仮想環境(コンテナ)は独立しており、他のコンテナやホスト側からは操作できなくなっている。ただし完全独立ではなく、ポートを解放したり、共有ボリュームの設定、「docker exec」コマンドを使った操作は可能になっており、セキュリティを確保しつつも柔軟な操作が可能である。
例えば、あるコンテナにセキュリティ上の問題がありハッキングされたとしても、他のコンテナへ影響を及ぼすことは難しい。また、管理者としてはハッキングされたコンテナを停止させることで問題に対処できる。
リソースの確保
また、各コンテナはネットワーク、CPU、メモリ、ディスクI/Oが独立して管理されている。1つのコンテナが暴走したとしても、他のコンテナには影響を及ぼさないで済む。そのため、第2回「Dockerをサポートする主要サービス9選」で紹介したようなホスティングサービスが行われている。
データ、アプリケーション、HTTP、キャッシュなど多数のサービスが立ち上がっている中で、1つのサービスが暴走した結果サービス全体に影響を及ぼすことは多々ある。Dockerによる仮想化で、それを未然に防ぐことができる。
可搬性
Docker上で構築したシステムは他のDockerシステム上でも変わらず動かすことができる。例えばローカルの開発環境でDockerfileが動いている場合、同じDockerfileを本番環境でも動かせる。注意点としては、パッケージ管理でDockerの最新版をインストールすると指定した場合、実際にインストールされているバージョンが異なっているケースがあることだ。バージョンはなるべく固定したり(といってもセキュリティリスクになり得るので最新版を使うのをお勧めするが)、定期的なテストが必要だろう。
可搬性の高さはこれだけではない。アプリケーションサーバとデータベースを同一ホストOSに展開していたとしても、負荷分散のためにアプリケーションサーバを別ホストに移動したり、スケールさせることも可能だ。システム構成が柔軟になる点は大きなメリットだろう。
ホストOS型に比べて軽量
ホストOS型仮想化はゲストOSを仮想環境で実行する。それに対して、コンテナ型はゲストOSではなく、ソフトウェアの実行プロセスをコンテナでくるんで仮想環境を実行する。そのためホストOS型仮想化に比べて高速に立ち上がり、オーバーヘッドが小さい。
実際、Dockerは最初こそコンテナイメージのダウンロードなどで待たされるが、それさえ終わってしまえば実行は即座に行われる。2回目以降の実行は、ダウンロードが終わっているので一瞬だ。この実行速度の速さこそが大きなメリットだ。
Dockerのデメリット
Dockerに限った話ではないが、コンテナ型の仮想環境はまだ運用実績が少ない。Docker自体のバージョンアップも続いており、ユーザーは追随していく必要がある。とはいえ、Dockerはエンタープライズレベルでの利用を基本としているため、バージョンアップによって大きな差異が出ることはないと思われる。
運用実績が多くない状態では情報量が少なく、実際の運用に際しては学習コストが大きくなってしまう。手作業で試しつつナレッジを積み重ねていく他ないだろう。そういった個々の実践がオープンになっていけば良いが、エンタープライズの世界ではなかなか情報が表に出てこないかもしれない。これまではDockerを試用するための情報が多かったが、今後は実践的な運用ナレッジを公開、拡散していく流れが大事になるだろう。
Docker利用の向き/不向き
Dockerは全ての用途に向いているというわけではない。当然、向き/不向きが存在する。そこでDockerの特徴を生かした利用方法および向かないと思われる領域を紹介する。
向いている用途
・社内利用
現段階において、Dockerをいきなり本番環境で使おうと考える人は少ないだろう。まずテスト環境での利用を試みるはずだ。実際Dockerは、社内利用のメリットはあると思われる。社内利用に適している用途の1つ目としては、社内で使われるようなサーバサイドのソフトウェアをインストールするケースだ。
例えば、Wikiエンジンやプロジェクト管理、グループウェア、チャット、バージョン管理システムなどのDockerイメージが公開されている。これらを使うとコマンド1つでサーバソフトウェアを利用できるようになる。インストールの手間もなく、ライブラリがコンフリクトしたり、環境を汚してしまうこともない。
2つ目の用途は開発環境だ。「Mac OS X」や「Windows」向けに「boot2docker」というソフトウェアがリリースされている。これを使うことでクライアントマシンでもDockerが利用できるようになる。最近では「Vagrant」を使って開発環境を仮想化し、必要なプログラミング言語やサーバサイドのソフトウェアを用意することが多い。その開発環境が2つ、3つ同時に必要になるとホストOS型仮想環境では負荷が高くなってしまうが、boot2dockerを使うことで、1つのホストOS型仮想環境にコンテナ型仮想環境を複数立ち上げられるようになる。現在はWeb APIなどを使ってサーバ間連係させることが増えているため、そういった環境を開発用に用意する上でもDockerを使うメリットがあるだろう。
最後はテスト環境だ。最近はCI(継続的インテグレーション)の流れがあり、システムをアップデートするたびにテストを自動で行う。この自動テストを行う環境をDockerで用意するのだ。テスト環境は本番環境と同じ状態でサーバを用意しなければならないが、Dockerを使うことで同じような環境を瞬時に展開できる。そして、テスト実行後は環境ごと破棄してしまう。このように、必要なときに必要な環境を準備し、終わったら捨てるという仮想化ならではの使い方がDockerの場合、手軽に実現できる。
・SaaS利用
社外向けのサービスでDockerを使う場合、例えばSasSを提供するケースが考えられる。クライアントに提供するシステム環境をDockerで用意するようにすると、各クライアント間のリソースが共有されることなくセキュアにシステム環境を提供できる。また、ネットワークやCPUなどのリソースも別個に管理されるため、1つのクライアントが大きな負荷を掛けたとしても他のクライアントに影響を及ぼさずに済むだろう。
データのバックアップや共有データの用意など、運用においてはナレッジが必要になるが、Dockerの使い方としてはお勧めだ。
不向きな用途
・巨大なシステム
一方、Dockerに向かない(と思われる)用途としては、1つのDockerコンテナ上で巨大なシステムを構築するというものだ。Dockerを突き詰めると、1つのコンテナで1つのサービス(データベース、アプリケーションサーバ、プロキシサーバなど)を提供するのが理想といえる。そのため、1つのコンテナイメージで複数のサービスが立ち上がり複雑化するのは、セキュアな使い方ではなく、単にコンテナでくるんだにすぎず、お勧めできない。
現状、巨大なシステムがあり、そのサービスを切り出してDockerコンテナにまとめていく方法もあるだろう。この場合、各システムを疎結合にすることで将来的なバージョンアップに備えたり、システム構成のセキュリティやスケーラビリティを高めることができると考えられる。
・Linux以外のシステム
DockerはLinuxコンテナであり、Linux以外の環境を仮想化できない。米Microsoftと米Dockerの提携によって、Windows ServerでDockerが扱えるようになるとはいわれているが、まだ実際に試せないので、どういった扱いになるのかは不明だ。
現状ではMac OS XやWindowsでDockerを使う場合、「VirtualBox」というホストOS型仮想環境上に「Tiny Core Linux」という小さなLinuxディストリビューションを展開し、Dockerを動かす形になる。これはバーチャルマシン(VM)型を介しているので、ローカル環境下での利用に限定されるだろう。よって、Dockerを本格的にサービスで使う際にはLinux向けのシステムに限られるのが現状だ。
Dockerについては話題が先行している感があり、実践的な利用はまだこれからだろう(ローカルで利用しているケースすらまだ多くない)。とはいえ2014年からの話題性と安定性や機能の充実によって、企業でも「そろそろ触ってみようか」という流れが出てきている。コンテナ型仮想化が今後ますます広がりを見せていくのは間違いない。
Dockerの向き/不向き、メリット/デメリットがきちんと分かれば、どのシステムに導入するのが最適かも分かってくる。そのためにも知見をため、本格的に使われていく流れに乗り遅れないよう準備しておく必要があるだろう。
中津川 篤司(なかつがわ あつし)
MOONGIFT 代表/プロデューサー
オープンソース・ソフトウェアを毎日紹介するブログ「MOONGIFT」、スマートフォン/タブレットのアプリ開発者およびデザイナーを対象にしたメディア「Mobile Touch」を運営。B2B向けECシステム開発、ネット専業広告代理店のシステム担当を経た後、独立。多数のWebサービスの企画・開発およびコンサルティングを行う。2013年にMOONGIFTを法人化し、現在に至る。
Copyright © ITmedia, Inc. All Rights Reserved.
インフラ管理者のためのDocker解説
この記事の著者
関連記事
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
2
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
3
「Microsoft 365のセキュリティ運用」に関するアンケート
-
4
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
5
221人調査で分かった「情シス最大のストレス」は?
-
6
「Salesforceのテスト自動化ツール」に関するアンケート
-
7
IT製品の導入に関するアンケート「サーバ&ストレージ」編
-
8
「データストレージの活用方法」に関するアンケート
-
9
「AI時代の統合基盤・エンタープライズAI管理」に関するアンケート
-
10
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー