近年ではDockerなどのコンテナ型仮想環境が注目されており、Docker上で稼動させるコンテナのデプロイについてもさまざまな方法が検討されている。その1つが、WebブラウザからGUIでコンテナの管理や構築を行えるPanamaxだ。今回は、コンテナをホストするためのOSとして開発されているCoreOSとこのPanamaxを組み合わせて仮想環境の管理システムを構築する流れを紹介する。

PanamaxのアーキテクチャとCoreOS

今回紹介するPanamaxは、米国でデータセンター/通信回線事業を行っているCenturyLinkがオープンソースで開発しているDockerコンテナ管理ツールだ。Dockerはさくらのナレッジでも『これから始める「DockerでかんたんLAMP環境 for CentOS」』などの記事でたびたび紹介されているが、OS環境上に「コンテナ」という隔離された環境を構築する技術だ。素早く仮想環境を構築でき、またそれを稼動させるためのオーバーヘッドも少ないことから近年脚光を浴びている。

Dockerが注目されているのは、そのホストOSの環境に依存せずにアプリケーションをデプロイできる点だ。コンテナ内でアプリケーションを稼働させるには、依存するライブラリや関連ファイルなどすべてがそのコンテナ内に存在する必要がある。そのためコンテナ外の環境には依存せず、クラウド上だろうがVPS上だろうが実マシン(ベアメタル)上であろうが、Dockerが動く環境さえあればコンテナ内のアプリケーションは基本的には動作する。従来のアプリケーション開発においては開発/テスト環境と実運用環境が異なるために問題が発生することがあったが、Dockerを利用すればこういった問題を減らすことができる。

Dockerを使った運用では、Webサーバーやデータベースといったアプリケーションの1つのコンポーネントごとに1つのコンテナを用意して稼動させることが多い。そのため、複数のコンポーネントから構成されるシステムの場合、それぞれのコンテナを個別にインストールし、相互に協調動作するよう設定を行う必要がある。このように各コンポーネントを独立したコンテナ内で動作させることで依存性を減らし可搬性を高めることができるのだが、その代わりデプロイ作業が複雑になるというデメリットもある。このデプロイ作業を容易にするために開発されたのがPanamaxだ(図1)。

図1 PanamaxのWebサイト
図1 PanamaxのWebサイト

 このPanamaxの特徴としては以下のようなものがある。

  • テンプレートに従った自動環境構築
  • 遠隔サーバーへのコンテナの自動インストール
  • GUIによる設定

Panamaxは軽量OS「CoreOS」上で動作するソフトウェアであり、用意された「テンプレート」に従って複数のコンテナをマシン上にインストールしたり、それらが強調動作できるよう自動設定を行う機能を備えている。(図2)。

図2 PanamaxのGUI
図2 PanamaxのGUI

 たとえば公開されている「WordPress with MySQL」というテンプレートでは、Webブラウザからの操作だけでWordPressが稼動するコンテナとMySQLが稼動するコンテナをインストールし、さらにそれらが強調して動作するように設定を行うところまでが自動的に行われる。公開されているテンプレートにはWordPressやDrupal、GitLabといったアプリケーションをインストールできるものや、Ruby on Railsやnginxといったアプリケーション開発のベースに使えるものがあり、簡単に開発/運用環境を構築できる(図3)。

図3 Panamaxのテンプレート検索画面
図3 Panamaxのテンプレート検索画面

 また、Panamaxではテンプレートを利用するだけでなく、Docker用コンテナイメージ(以下、イメージ)が公開されているDockerHubからイメージを取得してインストールすることもできる。Panamaxのリモートエージェントがインストールされたマシンに対し、遠隔からコンテナをインストールすることも可能だ。

これらの作業や管理作業はWebブラウザから操作できるGUIで行えるため、管理コストの削減も期待できる。

Panamaxのアーキテクチャ

PanamaxはCoreOS上で動作する「Panamax-API」やWebブラウザから操作できるユーザーインターフェイス「Panamax-UI」などのコンポーネントから構成されている。そのうち、Panamax-APIは現時点ではCoreOS上でしか動作しない。そのため、それ以外のOS上でPanamaxを利用したい場合、仮想マシン上でCoreOSを稼動させ、そこでPanamaxを実行する形となる。

この場合仮想マシンを挟んでコンテナが稼動する形になるため、Dockerの「軽量」という利点は失われてしまうが、これによってWindowsやMac OS XといったLinux以外のOSからでもPanamaxが利用できるようになるというメリットがある。とはいえ、もし実運用環境でPanamaxを活用するのであれば、実マシンにCoreOSを直接インストールするか、もしくはVPSやさくらのクラウドといったサービス上にCoreOSがインストールされた仮想環境を用意し、そこでPanamaxを利用するのが良いだろう。

PanamaxをWindows環境で使う

Panamaxをとりあえず試してみたいという場合、公式にサポート対象であることが明言されているMac OS XもしくはUbuntu環境が手軽だ。これらについてはPanamaxのWebサイトにてインストール方法が説明されているほか、Mac OS X環境での利用については『Mac OSX × Dockerな環境が手軽に管理できる「Panamax」レビュー』という記事でも紹介されている。

また、Windows環境でも比較的容易にPanamaxを利用することが可能なので、こちらについても紹介しておこう。Windows環境でPanamaxを利用する場合、仮想環境構築ツールであるVagrant用の設定ファイルが公開されているので、そちらを利用すると簡単にCoreOSとPanamaxがインストールされた環境を準備できる。

まず前提条件として、VirtualBox 4.3.10以降とVagrant 1.6.5、そしてrsync、ssh(openssh)が必要だ。VirtualBoxについては、VirtualBoxのダウンロードページから、VagrantについてはVagrantのダウンロードページからそれぞれWindows向けのインストーラが入手できる。

いっぽう、やや面倒なのがrsyncおよびopensshの導入だ。これらはCygwinやMinGW/MSYSといったプロジェクトでほかのUNIXツールとともに配布されているので、これらを使うのが良いだろう。たとえばMinGW/MSYSの場合、ダウンロードページの「Installer」以下にある「mingw-get-setup.exe」からインストーラが入手できる(図4)。

図4 SourceForge.JPのMinGW/MSYSダウンロードページ
図4 SourceForge.JPのMinGW/MSYSダウンロードページ

 ダウンロードしたインストーラでMinGW/MSYSをインストールした後、インストール先ディレクトリ(デフォルトでは「C:\MinGW」)以下のbinディレクトリ内にある「mingw-get.exe」を実行すると、MinGW/MSYSで提供されているパッケージが一覧表示されるので、まずここで左ペインの「MSYS」-「MinGW Developer Toolkit」を選択する。続いて右ペインに表示される「msys-openssh bin」と「msys-rsync bin」について、右クリックして表示されるメニューから「Mark for Installation」を選択してマークする(図5)。

図5 インストールしたいパッケージを右クリックして「Mark for Installation」を選択する
図5 インストールしたいパッケージを右クリックして「Mark for Installation」を選択する

 また、Panamaxはtar.gz形式のアーカイブで配布されているので、これを展開できるよう「MSYS Base System」内にある「msys-tar」なども適宜必要に応じて選択しておくと良いだろう。

最後に「Installation」メニュー内の「Apply Changes」を選択し、表示される確認画面で「Apply」をクリックすればopensshとrsyncがインストールされる。これらの実行ファイルはデフォルトでは「C:\MinGW\msys\1.0\bin」以下にインストールされるので、コマンドプロンプトなどからこれらを実行できるようパスの設定もしておこう。

これらの準備が完了したら、まずPanamaxのインストーラを含むアーカイブ(http://download.panamax.io/installer/panamax-demo.tar.gz)をダウンロードする。次に、このアーカイブを適当なディレクトリに展開し、そこに含まれる「Vagranfile-win」というファイルを「Vagrantfile」という名前にリネームする。たとえばコマンドプロンプト上ででのこの作業をする場合、以下のようになる。

>mkdir panamax
>cd panamax
>copy C:\Users\hirom\Downloads\panamax-demo.tar.gz .
>tar xvzf panamax-demo.tar.gz
>copy Vagrantfile-win Vagrantfile

最後にこの「Vagrantfile」が含まれるディレクトリ内で「vagrant up」コマンドを実行すると、PanamaxがインストールされたCoreOS環境を含む仮想マシンイメージがダウンロードされ、仮想マシンが起動する。

>vagrant up

仮想マシンの起動後は、「vagrant ssh」コマンドで仮想マシンにログインできる。なお、この仮想マシンは起動後にいったんシャットダウンさせてしまうとそのままではログインできなくなってしまうので、ログイン後にあらかじめ用意されている「core」ユーザーのパスワードを設定しておく、もしくはログインに使用するSSH公開鍵を登録しておく必要がある。

仮想マシンの起動後にPanamaxの管理UIにアクセスするには、VirtualBoxマネージャでのポートフォワーディングの設定が必要だ。スタートメニューなどに登録されている「Oracle VM VirtualBox」を選択すると「Oracle VM VirtualBoxマネージャー」が起動する(図6)。

図6 Oracle VM VirtualBoxマネージャー
図6 Oracle VM VirtualBoxマネージャー

 ここで表示されている「panamax-vm」を選択してツールバーの「設定」ボタンをクリックすると、設定画面が表示される(図7)。

図7 「oanamax-vm」の設定画面
図7 「oanamax-vm」の設定画面

 この画面で「ネットワーク」を選択し、「ポートフォワーディング」ボタンをクリックすると、「ポートフォワーディングルール」ウィンドウが表示される(図8)。

図8 「ポートフォワーディングルール」ウィンドウ
図8 「ポートフォワーディングルール」ウィンドウ

 ここで右側に表示されている「+」ボタンをクリックして以下の設定を追加する(図9)。

名前:「panamax」
プロトコル:TCP
ホストIP:127.0.0.1
ホストポート:3000
ゲストIP:なし(空白のまま)
ゲストポート:3000
図9 設定後のポートフォワーディングルール
図9 設定後のポートフォワーディングルール

 最後に「OK」をクリックして設定を反映させた後、Webブラウザで「http://localhost:3000」にアクセスするとPanamaxの管理画面が表示されるはずだ(図10)。

図10 Panamaxの管理画面
図10 Panamaxの管理画面

Panamaxの管理画面からコンテナを作成する

Panamaxでコンテナを作成するには、まずPanamaxの管理画面トップに表示されるテキストボックスなどを利用して作成したいイメージやテンプレートを検索する。たとえば「mysql」で検索すると、図11のように該当するテンプレートやコンテナイメージが表示される。

図11 テンプレート/イメージ検索結果画面
図11 テンプレート/イメージ検索結果画面

 ここで作成したいテンプレートもしくはイメージを選び、「Run Templete」メニューから「Run Locally」を選択すると、コンテナが作成されてそれらがデプロイされる。たとえば「Wordpress with MySQL」テンプレートではWebサーバー用とデータベース用の2つのコンテナが作成され、コンテナの作成や設定作業などが自動的に行われる(図12)。

図12 テンプレートをデプロイすると、それが「アプリケーション」として表示される
図12 テンプレートをデプロイすると、それが「アプリケーション」として表示される

 このとき、作業の進捗は画面下のログ表示エリアに表示されるログで確認できる。また、デプロイしたアプリケーションへのアクセス方法やドキュメントなどは画面中程に表示されている「Access your application」リンクや「Documentation」リンクをクリックすると確認できる。たとえば「Wordpress with MySQL]テンプレートの場合、これが稼動しているホストの8080番ポートにWebブラウザでアクセスすることでWordPressにアクセスできる(図13)。

図13 「Wordpresswith MySQL」のドキュメント
図13 「Wordpresswith MySQL」のドキュメント

PanamaxをCoreOS環境で使う

Panamaxを本格的に活用するのであれば、実サーバー、もしくはVPSやクラウド上にCoreOSをインストールし、そこでPanamaxを利用するのがおすすめだ。この場合、まずはCoreOS環境の用意が必要となる。たとえばさくらのクラウドの場合、初期設定済みのCoreOSイメージが提供されているので、これを利用すればすぐにCoreOSを利用できる。また、実マシンやVPSなどでCoreOSを利用したい場合は、CoreOSのWebサイトからダウンロードできるISOイメージを使ってインストールを行える。そのほか、VMwareやQEMU、OpenStackといった仮想環境向けのイメージも用意されている。

今回は実マシンもしくはVPSでの利用に向け、まずISOイメージからCoreOSをインストールし、続いてPanamaxをインストールする方法を紹介しよう。

インストール用環境のネットワーク設定

CoreOSのインストールは、ダウンロードしたCoreOSのISOイメージからPCもしくはVPSを起動し、シェルから「coreos-install」コマンドを実行することで行える。このコマンドではインターネット経由でCoreOSのシステムをダウンロードしてHDD内にインストールできる。

ただし、CoreOSのISOイメージからOSを起動した場合、起動直後はネットワークが利用できない場合がある。この場合、先にネットワーク設定を行う必要がある。CoreOSではサービスの管理や設定にsystemdが採用されており、「/etc/systemd/network/」ディレクトリ以下にネットワーク設定を記述したファイルを配置するようになっている。ここにファイルを作成し、ネットワーク系のサービスを再起動すれば設定が反映される。

詳しくはCoreOSのNetwork Configuration with networkdというドキュメントで説明されているが、例えば固定IPアドレスを指定する場合、「/etc/systemd/network/static.network」ファイルを作成し、以下のような内容を記述する。

[Match]
Name=<NICデバイス名>

[Network]
Address=<割り当てるIPアドレス>
Gateway=<デフォルトゲートウェイのIPアドレス>
DNS=<DNSサーバーのIPアドレス>

ここで「NICデバイス名」では「enp2s0」といったデバイス名を指定し、また「割り当てるIPアドレス」は「192.168.0.4/24」のように「<IPアドレス>/<サブネットマスク>」の形で記述する。

いっぽう、DHCPを利用してIPアドレスの設定を行う場合、「/etc/systemd/network/dhcp.network」ファイルを作成して以下の内容を記述する。

[Match]
Name=<NICデバイス名>

[Network]
DHCP=yes

続いてsystemctlコマンドで「systemd-networkd」サービスを再起動すると設定が反映され、ネットワークが利用可能になる。

$ sudo systemctl restart systemd-networkd

CoreOSの環境設定

CoreOSでは、「Cloud-Config」という仕組みを使ってネットワークや稼動させるサービスなどの環境設定を行うようになっている。Cloud-Configでは、設定ファイルに設定内容をYAML形式で記述することで設定を行う。CoreOSのインストール時にあらかじめこの設定ファイルを用意しておき、CoreOSとともにインストールしておくと良い。

Cloud-Configではさまざまな設定が可能だが、まずはネットワーク設定およびリモートログイン用のSSH公開鍵について設定しておくことをおすすめする。CoreOSはデフォルトでは堅牢な設計になっており、コンソールからのログインすらできないようになっているからだ。以下の例は、最低限の設定を記述したものだ。

#cloud-config

hostname: <ホスト名>

coreos:
  units:
    - name: docker.service
      command: start
    - name: 00-<NICデバイス名>.network
      runtime: true
      content: |
        [Match]
        Name=<NICデバイス名>

        [Network]
        Address=<割り当てるIPアドレス>
        Gateway=<デフォルトゲートウェイのIPアドレス>
        DNS=<DNSサーバーのIPアドレス>

ssh_authorized_keys:
  - <SSH公開鍵の内容>

たとえばホスト名として「coreos01」、NICのデバイス名が「enp2s0」の場合、以下のような内容になるだろう。

#cloud-config

hostname: coreos01

coreos:
  units:
    - name: docker.service
      command: start
    - name: 00-enp2s0.network
      runtime: true
      content: |
        [Match]
        Name=enp2s0

        [Network]
        Address=192.168.0.10/24
        Gateway=192.168.0.1
        DNS=192.168.0.1

ssh_authorized_keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAqQNDA0Zl1q4WsocC+WFZ6l0NAn7LGhBqU5zM+NYz+R76p/HrJB3WpAITzeSCyLalkX9yS1bEcTCyejeGX+CBQw9aWeN+HRxwNPiLNMaB0hye6GsotCESklFqZeQjtKQzbbO7raPW1wyJiiAh+x5/nR1WmmwmLj+AR2+oznx9/K9J71zuImkx7ulUsLNTm/2iDqH29eLusTlka9dCUnRmlXV2WHx4ZKIMgcjSCgoKN2lrwMZl+l0RUFZ5GNf0cNMIPL5k+x9ybnWiMzaDUE2UogrBUnN0llJBosxrMgDNQR62rG1PTUaLeHx2kupalHxo84YwrWbTG1RMxGkMikM6Hw== hirom@hirom-PC

これを「cloud-config.yaml」というファイルに保存し、次のようにcoreos-installコマンドを実行すると「/dev/sda」にCoreOSがインストールされる。

$ sudo coreos-install -d /dev/sda -C stable -c cloud-config.yaml

続いてマシンを再起動すると、インストール先ストレージからCoreOSが起動されるはずだ。

なお、CoreOSではデフォルトでは「coreos」というユーザーが作成されているが、このユーザーにはパスワードが設定されておらず、そのままではコンソールからのログインが行えない。もしコンソールからログインしたい場合、カーネルのブートオプションとして以下を指定してカーネルを起動すれば良い。

coresos.autologin

また、自動ログインを許可するコンソールを指定することもできる。たとえばtty1およびttyS0からのみログインできるようにするには、以下のように指定する。

console=tty0 console=ttyS0 coreos.autologin=tty1 coreos.autologin=ttyS0

Panamaxのインストール

PanamaxをCoreOSにインストールするには、Panamaxの配布ファイルをCoreOS上で展開し、そこに含まれる「coreos」コマンドを「install」オプション付きで実行すれば良い。Panamaxは「https://github.com/CenturyLinkLabs/panamax-coreos.git」というリポジトリで公開されているので、Gitでこのリポジトリをクローンするのが手軽だ。

$ git clone https://github.com/CenturyLinkLabs/panamax-coreos.git
Cloning into 'panamax-coreos'...
remote: Counting objects: 1061, done.
remote: Total 1061 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1061/1061), 362.10 KiB | 156.00 KiB/s, done.
Resolving deltas: 100% (582/582), done.
Checking connectivity... done.

続いてroot権限でここに含まれる「coreos install」コマンドを実行する。

$ cd panamax-coreos/
$ sudo bash coreos install --stable

これでPanamaxがCoreOS上にインストールされる。インストール後、そのマシンの3000番ポートにWebブラウザでアクセスするとPanamaxの管理UIにアクセスできる。

CoreOSを活用したいならおすすめできるPanamax

今回はWindowsおよびCoreOS環境におけるPanamaxの導入方法について紹介した。PanamaxはDockerコンテナを管理できるツールという触れ込みではあるが、現時点ではCoreOS上での動作のみがサポートされているため、「CoreOSの管理ツール」と言ったほうがより適切かもしれない。そういった背景もあり、ただ手軽に仮想マシンや仮想環境が必要という用途であれば、Dockerを単体で利用する、もしくはVagrantなどのツールを利用するほうが使い勝手は良い。いっぽう、CoreOS上にアプリケーションをデプロイしたい、という用途であれば、Panamaxはおすすめできる。

今回は紹介していないが、特にPanamaxが活用できるシーンとして、複数台のマシンを組み合わせて運用しているサービスなどでの利用が挙げられる。Panamaxのテンプレート作成機能やリモートデプロイ機能を活用すれば、複数台のマシンを組み合わせた環境などでも容易に環境を構築できる。こういった用途に利用できるツールとしてはすでにOpenStackなどがあるが、CoreOSとPanamaxの組み合わせはオーバーヘッドが少ない点が魅力である。

とはいえ、開発途上のアプリケーションということで大規模な導入はまだ難しいだろう。現時点ではテスト環境の構築などにとどめておくのが良いかもしれない。