dockerのGUI使ってみたい、という事でportainerとrancherを試してみた。
この2つを試した理由はdockerイメージが提供されててコンテナ立ち上げればすぐ使えそうだったから。
rancherは機能的にはリッチな感じだけど、関連コンテナがボコボコ10個くらい立ち上がってきたので見送り。ポート周りの設定もなぜかうまくできなかった。(いつかもう一度試す)
agentコンテナが全然立ち上がらなくてあれこれ試行錯誤したのだけれどそれはまた今度。
で、portainer。
portainerの良いところはコンテナ1個で、細かい設定なしですぐ使い始められるとこ。素敵。
で、そんなportainerをもう少し使いこなしたくていじくりまわしたのでその結果を書く。
細かい理屈は置いといて~~(置きっぱなし)~~、できたこととそのやり方をメモ。
適宜追加していく予定。(追加するとは言っていない)
環境
環境はubuntu16.04
dockerのバージョンは17.12.0-ce
portainerは多分1.16.5
多分。
portainerにホストを追加する
portainerで複数のホストを管理する、要はEndpointの追加のやり方。
サーバAでportainerのコンテナを起動して、管理対象にサーバBを追加するようなとき。
作業は基本的にrootで実施。
-
dockerデーモンの起動オプションを追加する
リモートホスト(サーバBの方)のdockerデーモンに、tcpソケットを有効にするオプションを追加すればいい。らしい。
daemon.jsonを書き換える方法は上手く出来なかった。起動時の設定とconflictしてるとか何とか。
最終的には/lib/systemd/system/docker.service
を書き換えることで対応。ここ↓を
ExecStart=/usr/bin/dockerd -H fd:// ExecReload=/bin/kill -s HUP $MAINPID
こう↓した
1行目の空白は既存設定の上書きに必要っぽい。書かなかったら失敗したので注意。ExecStart= ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 ExecReload=/bin/kill -s HUP $MAINPID
-
dockerデーモンを再起動する
デーモンを止めてー、systemctl stop docker
設定を読み直してー、systemctl daemon-reload
デーモンを上げ直す。systemctl start docker
起動後のプロセスをpsコマンドとかで確認して設定の通りになっていればOK。
$ ps -ef | grep dockerd root 1677 1 0 15:04 ? 00:00:20 /usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
-
portainerにEndpointを追加する
あとはportainerのGUIでEndpoint画面を選択して追加するだけ。
このときEndpoint URLはサーバBのIPアドレス:2375
で設定する。
ホストの切り替えは画面左部ペインの ACTIVE ENDPOINT から。
蛇足
これで複数のホストが1画面で管理できるぞやったー。
と思ったけど、ホストが少ない(2つとか)とメリットをあまり感じない。
それぞれにportainer入れても良いような気すらしてくる…
まぁ、こっちの方がちゃんと使いこなしてる感あるし、良いことにする。
セキュリティ面に配慮してきっちりやるのであれば http://docs.docker.jp/engine/security/https.html にあるように、鍵ファイル作ってポートも2376
でtls使う方が良いと思う。
けれども、今回はお試しなのでとりあえずこれで。
追記
daemon.jsonへのオプション追加がうまくいかなかった件。
どうも起動時の-Hオプションを削除したうえでdaemon.jsonを書き換えればよかったらしい(あやふや)
この辺りが多分答え。
https://github.com/docker/for-linux/issues/76
https://docs.docker.com/config/daemon/#troubleshoot-conflicts-between-the-daemonjson-and-startup-scripts