前回までDockerの環境構築および操作について、コマンドを利用したCLI(Command Line Interface)で説明をおこなった。ただ、コマンド操作に不慣れな方にとっては、できるだけコマンドでの操作を減らし、GUI(Graphical User Interface)で手軽に操作や管理をしたいと考えるだろう。そこでDockerをWebブラウザから管理できるツールを利用するのも選択肢のひとつとなる。

DockerをWebブラウザ、すなわちWebUIで管理するツールは複数存在するが、簡単かつ多機能のRancherをおすすめする。今回はRancherの紹介およびRancherによるWebUIでのコンテナ管理について説明する。

Rancherとは

RnacherはRancher Labs, Inc.が開発したコンテナ管理ツールである。Rancherの特徴を挙げるならば、それはコンテナ管理の簡素化といえよう。代表的な特徴は以下の3つだ。

オーケストレーションの環境を自動構成

DockerのSwarm modeとKubernetesのクラスタ環境でのオーケストレーションは、第5回第6回で説明したとおりだが、実際にクラスタの構築や管理をおこなうにはコマンドを覚える必要があり、学習コストもかかる。

では、Rancherではどうか。

クラスタ構築はコマンドひとつで済み、管理はWebUIで実施可能だ。Rancherでは、情報を管理するWebUIを搭載したServerと、クラスタに参加するAgentの2種類で構成されている。

管理するServerの起動とDockerホストのクラスタに参加するための操作が、どちらもひとつのdockerコマンドで済むというお手軽さだ。Rancher2.0からはKubernetesのみ対応となっているが、それでもオーケストレーションを想定したクラスタ環境を手軽に構築できるのは大きなメリットといえる。

RancherマシンドライバーによるDockerホストの自動構築

Dockerホストの構築でも、Rancherは便利な機能を用意している。それは、対応しているクラウドサービスであれば、WebUIの操作のみでDockerホストを作成できる機能である。作成されたDockerホストは自動的にクラスタへ参加するので、Dockerのインストールから使用開始までの手間が必要なくなるのもRancherの魅力のひとつだ。

カタログ機能

Rancherは、コンテナを構成する情報がまとめられたテンプレートの一覧とカタログが事前に用意されている。カタログに利用したいアプリケーションが存在すれば、自分でdocker-composeファイルなどを作成せずとも、クリックひとつでアプリケーションのコンテナを起動することが可能だ。

そのほかにコンテナのグループ管理やDockerホストのリソース状況表示、監視、健全性チェック、APIの提供などといったコンテナ管理を、WebUIで網羅的に操作できるようになっており、CLIでコマンド操作による管理をしたことがない方でも簡単に管理が可能だ。

このように便利な機能が満載なツールではあるものの、もちろんデメリットも存在する。

Serverの要求スペックが高い

RancherのServerは、クラスタに参加しているDockerホストの情報を一元管理しているため、管理するDockerホストが多くなると必然的にサーバのスペックも要求される。そのため、次期リリースのRancher 2.0からは、メモリー4GB、HDD 80GBを推奨している。

Rancher 2.0 | Rancher Labs

メジャーアップデートによる大幅な仕様変更

Rancherは2017年の年末に、初めてのメジャーアップデートを予定しており、それにともない大幅な仕様変更が行われる。前述したオーケストレーションの対応が、Kubernetesのみになるのもそのひとつだ。そのため今後サービス提供環境でRancherを利用したい方は、2.0の正式リリース後をおすすめする。

Rancherのメリットとデメリットを紹介したが、実際に利用してみないと実感はわかないであろう。では、どのようにRancherを構築し管理すればよいか、恒例のWordPressの環境構築で説明する。

RancherによるWordPress環境構築

Rancherは、Dockerホストを管理するServerと、クラスタに参加するAgentの2種類が存在することは前述したとおりだ。上記を踏まえた上で、前回紹介したWebサーバ2台、Databaseサーバ1台によるWordPress環境をRancherで構築する。

また、Rancherは、Preview版である2.0を使用する。

では、初めにRancher サーバに以下のコマンドを実行する。

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:preview

これでRancherコンテナが正常に起動すれば完了である。起動後は、ブラウザより以下のURLにアクセスすればよい。

http://(Rancher サーバのIPアドレス):8080

正常に作業が完了すれば、上記URLにアクセスするとRancherの画面が表示される

RancherのWebUIですべき事前作業は以下の3つである。

1.WebUIを日本語に設定する。

RancherのWebUIは多言語対応しており、日本語も対応している。切り替え方法は、WebUIのフッターメニュー左下にある言語を「日本語」に変更すればよい。

2.アクセスコントロールを設定する

Rancherは、初期の状態では誰でもアクセスできるようになっているため、特定のユーザのみログイン可能とする設定が必要である。設定手順は以下のとおりだ。

①メニューバーより「管理者」->「アクセスコントロール」の順にクリックする。
②Localの画像をクリックして、アカウント、パスワードを入力して「保存」ボタンをクリックする。

上記設定実施後、ログイン画面が表示されれば設定完了だ。

※なお、今回紹介するPreview版ではアクセスコントロールの設定はできない。

3.WebサーバとDatabaseサーバで起動するRancher Agentコンテナ用コマンドを取得する。 Dockerホストがクラスタに参加するためのAgentコンテナ用コマンドは以下の手順で取得できる。

①メニューバーより「ホスト」をクリックする。
②Add Hosts内の「Select」をクリックする。
③ホスト登録 URLは変更せず「保存」をクリックする。
④Customの画像をクリックして、下に表示されるdockerコマンドをコピーする。

コマンドのコピーは、コマンドが記載されている画面の右側にあるボタンをクリックすればよい

これで事前準備は完了だ。コピーしたAgentコンテナ用コマンドをWebサーバとDatabaseサーバ上で実行すれば、RancherのWebUIにホストとして登録され、Rancherの管理下となる。

次に、WordPress、MySQLコンテナを配置する。MySQLは以下の手順で配置する。

1.メニューバーより「ホスト」をクリックする。

2.Database サーバの右側にあるボタンをクリックし、「編集」をクリックする。

3.ラベルの項目をクリックして、「ラベルを追加」をクリックし、以下の内容を入力する。

キー server_group
mysql

4.「保存」ボタンをクリックし、ホスト画面でDatabaseサーバの名前にラベル情報が表示されることを確認する。

5.メニューバーより「コンテナ」をクリックする。

6.上にある「コンテナを追加」をクリックする。

7.以下の内容を入力する。

名前 MySQL
Dockerイメージ mysql
環境変数 MYSQL_ROOT_PASSWORD=mysql

8.右上の「追加のスケジューリングオプション」を選択し、以下の項目を選択、または入力をする。

Service with a scale of 1 container

9.ホスト スケジューリングをクリックし、「全てのコンテナに対しスケジューリングルールにマッチしたホストを自動的に選択」を選択した後、「スケジューリングリングルールを追加」をクリックする。

10.以下の内容を選択、入力する。

条件 must
フィールド ホストラベル
キー server_group
mysql

11.「起動」ボタンをクリックする。

これでMySQLコンテナは起動した。次はWordPressを起動する。

1.メニューバーより「ホスト」をクリックする。

2.Webサーバの右側にあるボタンをクリックし、「編集」をクリックする。

3.ラベルの項目をクリックして、「ラベルを追加」をクリックし、以下の内容を入力する。

キー server_group
wordpress

4.「保存」ボタンをクリックし、ホスト画面でWebサーバの名前にラベル情報が表示されることを確認する。

5.メニューバーより「コンテナ」をクリックする。

6.右上にある「コンテナを追加」をクリックする。

7.以下の内容を入力する。

名前 MySQL
Dockerイメージ mysql
環境変数 MYSQL_ROOT_PASSWORD=mysql
ポートマッピング ホストポート:8080、コンテナポート:80、プロトコル:TCP

8.右上の「追加のスケジューリングオプション」を選択し、以下の項目を選択、または入力する。

Service with a scale of 2 container

9.ホスト スケジューリングをクリックし、「全てのコンテナに対しスケジューリングルールにマッチしたホストを自動的に選択」を選択した後、「スケジューリングリングルールを追加」をクリックする。

10.以下の内容を選択、入力する。

条件 must
フィールド ホストラベル
キー server_group
mysql

11.「起動」ボタンをクリックする。

以上の操作をおこなった後、メニューバーより「コンテナ」をクリックして、WordPressとMySQLがActiveになればWordPressの環境は完成だ。

今回は初めからWordPressコンテナを2つ稼働しているが、スケールイン、スケールアウトしたい場合もWebUI上で操作可能である。手順は、WordPressコンテナの右側にあるボタンをクリックし、「編集」をクリックして、以下の値を変更してアップグレードすればよい。

Service with a scale of (コンテナの数) container

今回はRancherを紹介したが、その他にもDockerをWebUIで管理できるツールは存在するので、自分の好みにあったものを使用することをおすすめする。

今回までDockerを利用する方法を説明してきたが、そもそも利用したいアプリケーションをDockerコンテナにできなければ利用する必要がない。しかし実際にDocker環境に利用したいアプリケーションを構築する場合は、環境依存やカーネルのチューニングなどが必要になってくることがある。ではDockerはどのように対処できるか、こちらについては次回の「Dockerデーモンにオプションを追加してみよう」で説明する。

CloudGarage開発担当
IaaS型パブリッククラウドサービス「CloudGarage」の開発エンジニア。バックエンドのサーバ構築からフロントのアプリケーション開発まで幅広く行う。「Docker」は実務でも頻繁に利用するため、実際に使っている立場から「Docker」について解説をする。