いい加減、Dockerの管理をGUIでやりたいと思ったのでRancherという管理ツールを試してみました。

候補にしたツール


Rancher以外に候補にしたツールは下記の通りです。

Portainer

「THE EASIEST WAY TO MANAGE DOCKER」と謳っているだけあって、メッチャ楽だった。放り込んで起動するだけ。クラスタとかやらないのなら正直これで十分な感じがした。

/var/run/docker.sockの内容を読み取って内容を表示しているっぽい。Docker Remote APIを使えば別マシンのDockerも管理できるようだ。すごく手軽だったけど、今回はせっかくなのでもう少し複雑なこともやってみたいと思ったので、少し試しただけ。もしかしたら別記事で書くかもしれない。

Panamax

有名(?)っぽいのだが、リポジトリを見た感じ長期間メンテされてないので候補から外した。

OPENSHIFT origin

ハードウェア要件がキツ過ぎて却下。

kitematic

Docker社純正。起動中コンテナに入れるとか便利そうだったけど、残念ながら「Docker for WindowsとDocker for Mac」用だったため却下。

simple-docker-ui

Electronデスクトップ版のベータリリースもあるので、今度試してみようかと思った。

Rancher


上記の候補と比較した結果Rancherを使ってみることにしました。RANCHER LABSという会社が開発してるようだし、機能も豊富ですし、GitHubのスターもそこそこついてますし、UIもキレイだったというのが理由です。

環境


というわけで、長くなったけど試してみた環境について。

  • Ubuntu 16.04
  • Rancher 1.6.7
  • Docker 17.04-ce
  • Docker-compose 1.15.0

Dockerを動かしてるマシンにエージェントをインストールして管理用サーバから操作するという感じ。もちろん1台でも動きます。今回は1台で試してみました。ドキュメントではメモリ1GBが動作要件と書いてます。とりあえず管理用サーバを動かしたら500MBくらい使ってました。

docker-compose.ymlを作る


Rancher自体もDockerで動かします。RancherはデータベースにMySQLを使用しているのですが、こいつを永続化しないと話にならないですし、Dockerのコマンドを長々打つのはめんどくさいのでとりあえずいつも通りdocker-compose.ymlを作成します。

1
2
3
4
5
6
7
8
version: '3'
services:
rancher:
build: rancher
ports:
- "8080:8080"
volumes:
- ./data/mysql/:/var/lib/mysql

後は同階層にrancherというディレクトリを作って、中にDockerfileを作成。Dockerfileの中身は下記の通り。公式のイメージをそのまま引っ張てるだけ。

1
FROM rancher/server:latest

なおlateststableがあるようですが、男は黙ってlatest
まだ修正すると思うけど、作ったやつはとりあえずここに上げてます

起動


後はdocker-compose up -dで起動してipaddress:8080にアクセスするだけでOK。

言語変更


右下の方で「日本語」に変更。日本語があるの素晴らしい。

認証方式変更


デフォルトの認証方式がGitHub OAuthになっているのでパスワードに変更します。「アクセスコントロール -> LOCAL」を選択してユーザ名とパスワードを入力します。

ホスト指定 & エージェントインストール


「インフラストラクチャ -> ホスト」で「ホストを追加」を選択します。

今回は管理サーバと同一マシンでやりますので「サイトのアドレス」を選択し「保存」を押します。

5番の「以下のコマンドをコピー&ペースト…」でコピーしたコマンドを管理したいホスト(今回は管理サーバと同一マシン)で実行します。

エージェントのインストールがはじまるので終わるまで待ちます。

UIとか


以下、UIの抜粋。

こんな感じでDocker-composeで起動してるやつがまとめて表示されてた。すげ~便利ですね。

コンテナ別のリソース使用状況とか。

どのボリュームをマウントしてるとか。

次は…


とりあえず、1マシンで動かすのは簡単でした。次はGCPからVPSのDockerを管理してみたいと思います。