インフラ管理者のための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解説
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
2
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
3
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
4
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
5
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
6
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
7
「結局使わなくなる」Microsoft 365 Copilotを半年で定着 キリンの3施策
-
8
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
9
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
-
10
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー