Dockerを使う時の注意点
Dockerは、これまでの業務システムの開発/運用上の多くの問題点を解決することができるソリューションとして注目されていますが、システムへの導入には、現時点(執筆時)でいくつかの注意点があると筆者は考えています。
データの保存先をどうするか?
Dockerのメリットは、どこででも動くというポータビリティの高さです。コンテナを必要なときに起動し、不要になれば破棄するという運用が適しています。その際、問題になるのがデータの保存先をどうするかという問題です。アプリケーションの実行ファイルやサーバ/ミドルウエアの設定情報などは、コンテナ内に格納しても問題ありませんが、データベースに保存する永続データや各種ログをコンテナ内に保存すると、そのコンテナを破棄したときに不都合が起こる場合があります。そのため、システムの永続データをどう管理するかのしくみを考えなければいけません。
インフラの全体システム設計はどうする?
たとえば、Webシステムの場合、アプリケーションサーバやデータベースサーバなど役割の異なるサーバ群が連携しながら動作します。コンテナで構築するときも、どの単位でコンテナを作っていくかのポリシーを決めて、インフラを構築する必要があります。これについては、システムの規模や要件によって、どのようにすべきか議論が分かれるところです。
これは業務アプリケーション開発でも同じで、クラスにどのような責務をもたせるか、全体の設計ポリシーはどうすべきかなどは、プロジェクトの要件によって変わってきます。Dockerは、今後さまざまな企業が採用することで、運用上のノウハウが蓄積されていくと思われます。それらにより、Dockerを使ったインフラのデザインパターンやベストプラクティスが確立されていくと考えられます。
コンテナの運用管理をどうするか?
本番環境でコンテナを稼働させるには、複数のコンテナ群をどのように効率よく管理するかを検討する必要があります。たとえば、ログをどのように集中管理するか、コンテナをどのように監視するか、システム障害が発生したときにどのようなオペレーションをとるかなどです。
これらはDockerだけでは実現できない場合もありますので、他のツールやソリューションとうまく連携して運用方式を決めていく必要があります。
さらに、Dockerを使えばこれまではインフラエンジニアの仕事だった環境構築を、業務アプリケーション開発者で行うことができます。しかしながら、本番稼働後の監視や障害対応などはだれがどのように担当するのかなど、プロジェクトメンバーの業務分掌やプロジェクトの組織構成など、技術的な側面以外の観点からも見直す必要があります。
Dockerの制約を理解しているか?
DockerはLinuxカーネルの技術を使って実装されています。そのため、Linux上でしか動かないという制約がつきます。そのため、1つのハードウエア上にLinux以外のOSを稼働させたい場合は、ハイパーバイザー型仮想化の採用が必要です。また、コンテナ仮想化は、OSを論理的にコンテナとして分割しているにすぎません。OSに重大な脆弱性が見つかったなどの場合、セキュリティの観点からみるとハイパーバイザー型のほうが堅牢です。
Dokcerはシステム上の問題を多く解決してくれる便利なツールですが、やみくもにDockerを導入さえすればすべてがうまくいくというものではないと筆者は考えています。Dockerの特徴やしくみを知ったうえで、業務システム全体の基盤アーキテクチャやアプリケーションの処理方式/運用方式を検討して導入するのがおすすめです。
Dockerのインストール
前置きがずいぶん長くなってしまいましたが、これからDockerをインストールしていきます。DockerはLinux上でコンテナ仮想環境を構築するツールです。これをWindows環境で実行するには、まずWindows上に仮想環境を構築し、そこでLinuxサーバを動作する必要があります。DockerのWindows版といわれると、「WindowsのOSでDockerが動くのかな?」と勘違いされてしまうかもしれませんので気を付けてください。
Dockerには、Windows上にVirtualBoxによる仮想環境を構築し、その上でDockerを動作させることができる「Boot2Docker」というDocker専用の軽量Linuxディストリビューションが提供されています。今回は、このBoot2Dockerを使って環境を構築していきます。
Boot2Dockerのダウンロードは以下のサイトになります。執筆時の最新版は1.5.0です。
インストール用の実行モジュール(docker-install.exe)をダウンロードして実行します。Boot2DockerをインストールするとVirtualBoxもインストールされますが、すでにインストールしている場合は、セットアップ中の次のチェックボックスを外してください。VirtualBoxがどのようなものかついては、前回の連載を参考にしてください。
インストールが完了したらデスクトップの「Boot2Docker Start」アイコンをクリックしてください。Dockerのマスコットキャラクターであるくじらの「Moby Dock」が泳いでします。このMoby Dockの背中に乗せてある荷物がコンテナで、いくつかのコンテナを積み重ねて泳いでいます。
これでDockerの実行環境が構築されました。
起動時にboot2dockerに割り当てられたIPアドレス(例では192.168.59.103)が表示されます。コンテナの動作確認のときに必要になりますので、忘れないようにひかえておいてください。
動作確認のため、次のコマンドを入力します。
$ docker run hello-world
すると、Dockerコンテナが起動し、次のメッセージが出力されます。
Hello from Docker. This message shows that your installation appears to be working correctly.
また、Boot2Dockerをアップデートするときは、Dockerコンソールを一度exitさせて次のコマンドを実行します。
$ boot2docker stop $ boot2docker download $ boot2docker start $ boot2docker ssh
これでインストールは完了です。
Boot2Dockerのインストール手順は以下も参照してください。
なお、他のLinuxディストリビューションやMac OS X/各種クラウドサービスでのインストール手順については以下のサイトを参照してください。
おわりに
今回の記事では、仮想環境でアプリケーションを管理/実行するためのオープンソースのソフトであるDockerの概要と、Windows環境へのインストールの手順を紹介しました。次回の記事では、具体的にDockerを使って実際にWebアプリケーションの実行環境を構築する手順を紹介します。