インフラ管理者のための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
-
事例
[日本オラクル株式会社] ピンチをチャンスに変えたEPR製品は? 先行企業の導入事例3選 -
技術文書・技術解説
[日本オラクル株式会社] 無自覚なリスク 秘伝Excelファイルが監査の壁、不正・ミスの温床となる理由 -
製品資料
[日本オラクル株式会社] 戦略的経理の第一歩 失敗のない「脱Excel」を実現する秘訣とは? -
技術文書・技術解説
[日本オラクル株式会社] いまさら聞けないオンプレERPとクラウドERPの違い 最適な製品をどう見極める? -
事例
[株式会社ビザスク] 連結売上高が約2倍に成長、富士フイルムが実践した新規事業創出の戦略とは?
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
2
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
3
「ノートPC派」は損をしている? Dellと考える“自作PC”のメリット
-
4
「業務改善とツール活用」に関するアンケート
-
5
LINEヤフーはなぜ「社内の管理者」すら信用しないインフラを作ったのか
-
6
慶應義塾が「Notion」を選んだ理由 AI導入の盲点になる“情報のサイロ化”
-
7
1200万円のSaaS導入を回避 スギ薬局「運用費10万円」のAIエージェント構築術
-
8
「GitHub Copilot」3000人に配布も基本機能しか使われない 保険大手が得た教訓
-
9
「Copilot」はなぜ放置される? “議事録要約止まり”を脱する処方箋
-
10
IBM iのブラックボックス化を打破 資産継承と進化を実現する「IBM Bob」の実力
ホワイトペーパーランキング PR
-
1
DX/AI投資の壁を突破、現代の最高財務責任者が直面する課題と克服のヒント
-
2
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
3
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
4
バックアップは“取っているから大丈夫”なのか? ランサムウェア時代の備え方
-
5
システムの保守がモダン化を阻む? 「変えない判断」から脱却する方法とは
-
6
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
7
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
8
5分で分かる Microsoft 365のデータ損失に備えるためのバックアップの仕組み
-
9
ネットワーク遅延の原因、「パケットロス」の基礎知識と効果的な解決策
-
10
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー