0%

Rancher.ioでDockerコンテナを管理する - Part3: Rancher.ioをインストールする

IDCFクラウド上に構築したSalt+Docker環境にRancher.ioをデプロイします。Rancher.ioは管理サービスもDockerコンテナとしてデプロイするので、インストールがとても簡単です。salt-masterにManagement Serverを、salt-minionにDocker Nodesをデプロイします。

Saltクラスタの確認

minionの仮想マシンは以下の2台です。salt.cs3d0idcfcloud.internalの仮想マシンはsalt-masterとsalt-minionを兼用しています。

$ salt-key
Accepted Keys:
minion1.cs3d0idcfcloud.internal
salt.cs3d0idcfcloud.internal
Unaccepted Keys:
Rejected Keys:
root@salt:/srv/salt/config/salt#

Management Serverのインストール

salt-masterの仮想マシン(salt.cs3d0idcfcloud.internal)にログインします。Dockerイメージをpullして起動するだけです。

$ sudo docker pull rancher/server
$ sudo docker run -d -p 8080:8080 rancher/server

Docker Nodesのインストール

salt-minionの仮想マシン(minion1.cs3d0idcfcloud.internal)にログインします。こちらもDockerイメージをpullして起動するだけですが、いくつか引数を渡します。

$ sudo docker pull rancher/agent
$ sudo docker run -it \
-e CATTLE_AGENT_IP="210.140.173.117" \
-v /var/run/docker.sock:/var/run/docker.sock rancher/agent \
http://10.3.0.165:8080

CATTLE_AGENT_IP

まず、環境変数のCATTLE_AGENT_IPDocker Nodesの仮想マシンにスタティックNATしたパブリックIPアドレスを指定します。IDCFクラウドの場合アカウントのVLANとインターネットの間にVirtual Routerがあります。仮想マシンのプライベートIPアドレスは直接インターネットの外部から接続できません。あらかじめポータル画面からパブリックIPアドレスの1つをminion1の仮想マシンに対してスタティックNATしておく必要があります。CATTLE_AGENT_IPにはこのスタティックNATを指定して、外部から接続できるIPアドレスを割り当てます。このIPアドレスはRancher.ioのUI(管理画面)にHostのIPアドレスに表示されます。ブラウザからWebSocketを使ったコンソール接続や、cAdvisorを使ったメトリクスの収集に直接使用されます。

Management ServerのIPアドレス

上記ではhttp://10.3.0.165:8080Management ServerのIPアドレスになります。Docker Nodesからの接続になるためアカウントVLAN内のプライベートIPアドレスで指定します。

UI (Rancher.ioの管理画面)

Docker Nodesのコンテナをsalt-minionで起動してしばらくするとUIにHostとして表示されます。

Ghostイメージのデプロイ

サンプルとしてdockerfile/ghost/を使います。通常のdocker runコマンドの場合は以下に相当します。

$ docker run -d -p 80:2368 dockerfile/ghost

Create Containerダイアログ

HostのNo container yet.の下のプラスボタンを押してCreate Containerダイアログを表示します。

The BasicタブにDocker Hub Registryから取得するイメージ情報など基本情報を入力します。

Portタブに、Dockerホストにマップするポートを入力します。

CommandタブのAs Userは必須項目になっています。ブランクだとコンテナが作成できないため参考値のrootを指定します。

cAdvisorのリアルタイムグラフ

cAdvisorのメトリクスをブラウザからWebSocketでCattle Agent経由で取得します。Docker Nodesのホストと、コンテナのメトリクスがそれぞれリアルタイムで表示されます。

Hostのグラフです。

コンテナのグラフです。

コンテナのシェル操作

各Containerページの右上、Execute ShellアイコンをクリックするとWebSocket経由でコンテナのシェルを実行することができます。

コンテナのコンソールはlibvirtのVNC WebSocketサポートを使っているようです。