SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

インフラ構成管理ツールを使いこなす!コードではじめるサーバ構築

業務アプリ開発者のための、コンテナ仮想化ツールDockerをつかったインフラ構築ことはじめ

インフラ構成管理ツールを使いこなす! コードではじめるサーバ構築 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

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です。

Boot2Dockerのダウンロード
Boot2Dockerのダウンロード

 インストール用の実行モジュール(docker-install.exe)をダウンロードして実行します。Boot2DockerをインストールするとVirtualBoxもインストールされますが、すでにインストールしている場合は、セットアップ中の次のチェックボックスを外してください。VirtualBoxがどのようなものかついては、前回の連載を参考にしてください。

インストールコンポーネントの選択
インストールコンポーネントの選択

 インストールが完了したらデスクトップの「Boot2Docker Start」アイコンをクリックしてください。Dockerのマスコットキャラクターであるくじらの「Moby Dock」が泳いでします。このMoby Dockの背中に乗せてある荷物がコンテナで、いくつかのコンテナを積み重ねて泳いでいます。

 これでDockerの実行環境が構築されました。

boot2dockerのコンソール
boot2dockerのコンソール

 起動時に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アプリケーションの実行環境を構築する手順を紹介します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
インフラ構成管理ツールを使いこなす!コードではじめるサーバ構築連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 阿佐 志保(アサ シホ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8513 2015/03/18 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング