LinuxのDocker管理ツール「rancher」の紹介


rancher」はWeb UIを使ってDockerクラスタを管理するためのツールです。今回は日本リージョンのあるVPSサービス「Vultr」に環境構築を行う手順を紹介します。

🍣 rancherのサーバ構成

rancherの管理画面や立ち上げたDockerのインスタンスなどを管理する「rancher server」とユーザーが設定したアプリケーションが起動する「rancher agent」によって構成されます。

🏀 Vultrにインスタンスを作成

Vultr」にiPXEブートでRancherOSを起動します。

#!ipxe
# Boots RancherOS in Ramdisk with persistent storage on disk /dev/vda
# Location of Kernel/Initrd images
set base-url http://releases.rancher.com/os/latest
kernel ${base-url}/vmlinuz rancher.state.formatzero=true rancher.state.autoformat=[/dev/vda] rancher.password=[初回ログインパスワード]
initrd ${base-url}/initrd
boot

[初回ログインパスワード]」にはパスワードを記入します。

🐝 sshでサーバにログイン

インスタンスが立ち上がったら、sshでサーバにログインします。パスワードはさきほどiPXEブートのスクリプトに記述した物を使います。

ssh rancher@[サーバのIPアドレス]

ログインしたらcloud-config.ymlを作成します。

hostname: rancher-laravel
ssh_authorized_keys:
- [公開鍵]

次のコマンドでRancherOSをインストールします。

sudo ros install -c cloud-config.yml -d /dev/vda

次にrancher serverをインストールします。

mkdir ~/data
docker run -d -v data:/var/lib/mysql --restart=always -p 8080:8080 rancher/server

dockerのプロセスが立ち上がったら、ブラウザからhttp://[サーバのIPアドレス]:8080/にアクセスします。

🍄 アクセス制限を行う

rancher serverのメニューのADMIN > Access ControlからGitHubログインでのアクセス制限を行います。

まずはGitHubの「Profile > Developer settings > OAuth Application > Register a new application」を選択します。

Client ID、Client Secretを使ってGitHubログインを行うように設定します。

🚕 Docker Hostを選択

Rancher severのメニューの「Infrastracture > Hosts > Add Host」でホストを追加します。Vultrは初期メニューには出てこないので「Manage available machine drivers」からVultrを追加します。

入力項目は次のとおりです。

項目 説明
Name 任意の名前を入力
apiKey Vultrのコンソール > Account > APIかはら発行できます
endPoint(URL?) https://api.vultr.com/
osId 初期設定のまま、RancherOSが起動
planId 202 (2GBメモリプラン)などを選択。https://api.vultr.com/v1/plans/list に一覧
priavateNetWorking 「オン」Private Networkに入れるかどうか
pxeScript そのまま
regionId 25 (Tokyo)などを選択。https://api.vultr.com/v1/regions/list に一覧
sshKeyId 本来はSSH keyのID。私が試したときにはうまくうごいてくれなかった

入力してしばらく待つとHostが起動してくれます。

🗽 Rancherのスタック画面からアプリケーションを登録

あとは「Stacks > User > Add Stack」からお望みのアプリケーションのdocker-composeをstackから登録するだけです。今回はTrelloクローンのwekanを立ち上げてみます。

version: '2'
services:
wekan:
image: wekanteam/wekan:meteor-1.4
links:
- wekandb
environment:
- MONGO_URL=mongodb://wekandb/wekan
- ROOT_URL=http://localhost:80
ports:
- 80:80
wekandb:
image: mongo:3.2.12
volumes:
- /home/johndue/docker/data/mongodb-wekan:/data/db

😼 コンテナ内でコマンドを実行する

Dockerコンテナ内でshellコマンドを実行したり、Rakeタスク等を実行するための手順です。

  • メニューのStack => 対象のStack(アプリケーション一式)を選択
  • コマンドを実行したいサービスを選択
  • メニューの中に「Execute shell」コマンドがあるのでクリック
  • コンソールでコマンドを実行できます

🐹 参考リンク

📚 おすすめの書籍