二度忘れた事を三度忘れないようにする

技術的なことから趣味のことまで

Docker + Rancher + Portainer 導入〜初期設定編

Dockerを使って開発環境を構築する機会があり、Dockerのバージョンもそうだけど折角なので新しいモノを利用して構築した際のメモ。
※Rancherの勉強会を見つけたけど既に満員だった。。。

利用バージョン
CentOS
・Docker v1.12.06
・Rancher v1.6.2
・Portainer v1.13.4

この記事が参考になるケース
・開発者のインフラスキルが乏しいチーム
・遠隔地に開発用サーバがあり、そこに各個人の環境を準備する必要があるチーム

1.Dockerのインストー
以前使っていたバージョンより大分新しくなっていたので、特に気にせずyum install

$ yum install docker nginx
$ service docker start または systemctl start docker

2.Rancherの導入
Quick Start Guide に従ってRancherコンテナを導入。

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

3.Portainerの導入
PortainerもホストOSに入れて動かす、というタイプではなくそれすらもコンテナで動かすスタイルのようなので、郷(マニュアル)に従う。

$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

4.nginxの設定
同一LANにDockerホストがあるとあまり気にすることはないが、企業等では遠隔地にあったりポート制限により通信が通らない事が多いので、nginxでリバプロすることで快適なアクセスを実現。

# 例
upstream rancher {
    server localhost:8080;
}

map $http_upgrade $connection_upgrade {
    default Upgrade;
    ''      close;
}

server {
    listen 80;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://rancher;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_read_timeout 900s;
    }
}

5.Rancher初期設定(とりあえず版)
オーケストレーションツールをオリジナル、k8s、Swarmと選べるようですが、今回は一番GUI的に力の入っているオリジナルのものを利用。本番で使う場合は考慮する必要があると思いますが、k8sもSwarmも勉強不足ということもありつつ、LBの設定が個人的に気に入っているのもあります。

ブラウザでアクセスすると初期画面になるのでナビゲーションにある「Add a Host」をクリックして管理対象のDockerホストを登録する。
f:id:knhko:20170717135822p:plain

Rancherへ接続するためのIPまたはドメインを設定する。
f:id:knhko:20170717141507p:plain

今回はDockerを登録するのでカスタムを選択して手順に沿って進めていき、Rancherに登録するDockerホストのIPを入力すると、一番下にコピペ用のコマンドが出来上がるので、対象Dockerホストにコピペ実行。
f:id:knhko:20170717143726p:plain

1分程で登録が完了するのでページ上部のメニュー「infrastructure」→「hosts」を選択すると先ほどのDockerホストが表示されて、色々なコンテナが動いて入ればOK。
f:id:knhko:20170717144751p:plain

とりあえずRancherの初期設定は以上。簡単ですね。

6.Portainerへ接続
初回はパスワード設定を求められるので設定してログイン。
f:id:knhko:20170717150528p:plain

初回ログイン時に管理対象を登録する画面が出て、ローカルを対象とする場合は上、リモートを対象とする場合は下にチェックを入れる。
f:id:knhko:20170717182429p:plain

管理対象と通信が出来ればダッシュボードが表示され、既にコンテナやRancherを導入していれば画像の様に色々動いている事がわかる。
f:id:knhko:20170717183443p:plain

以上で導入からとりあえず動くところまでが完了かな。