Docker管理ツールPortainerで複数ホストをまとめて管理

2022/04/18

Linux OracleCloud RaspberryPi

t f B! P L

サーバになんかツールをインストールして・・・、とかやるより

DockerでサクサクっとイメージをDLして動かした方が明らかに手っ取り早いし楽。

たくさんのコンテナを動かすと、管理が手間になるので、

コンテナの操作をGUIで管理できるツールがPortainer

複数ホストやクラスタ環境(Docker Swarmやk8s)でも管理ができる模様。


OCIに仮想マシン幾つかとRaspberryPiにもDockerを入れているので、

Portainerで一元管理してみようと思う。


前提

それぞれのホストにDockerとDocker-composeをインストールしておく。

OCIのOSは ubuntuにした。

マネージャー(Portainerをインストールするサーバ)はOCI上の仮想マシン。

エージェント(管理される側)はRaspberry Piとする。

Portainerのエディション、バージョンは「Community Edition(CE)版の2.11」。


Potarinerインストール

インストール方法は公式サイトを見ればわかる。

まず初めにPortainer用のボリュームを作成する。

docker volume create portainer_data

その次にPortainerのコンテナを作成する。

docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.11.1

https化が必要なら9000番ポートを"9443"に変えればいいんだけど、

SSL証明書を用意するのが面倒なので、後でhttps化するとして、

とりあえずは9000番ポートにしておく。


あとはOCIのネットワークセキュリティで9000/tcpのポート解放。

そして"http://<IPアドレス>:9000"にアクセスして、adminユーザーのパスワードを設定する。


Edgeエージェントのインストール

次にエージェントをインストールしよう。

Portainerのエージェントは以下の2種類ある。

  • Edgeエージェント:サーバからエージェントにアクセスできない場合
  • 通常エージェント:サーバからエージェントにアクセスできる場合

どっちを選ぶかは状況次第なんだけど、

サーバとエージェントが同一LANにいるのなら、通常のエージェント。

エージェントが自宅にあって、NAT越しになっているのならEdgeエージェントを選ぶべし。


RasberryPiは自宅にあるので、Edgeエージェントをインストールする。

DDNS+ポート転送すれば通常のエージェントでもいけると思うけど、めんどくさいww


Portainerの左ペインから「Environments」→「Add environment」をクリックする。


Environment typeで「Edge Agent」を選択し、各項目を入力する。

  • Name:エージェントの任意の名前
  • Portainer server URL:PortainerのURL

その後、「Add environment」をクリックする。


Deploy an agentの画面で「Linux」を選択。

「Docker Standalone」タブをクリックすると、エージェント上で実行するコマンドが表示されるので、

「Copy command」をクリックしてコマンドをコピーする。


その後、エージェント(Raspberry Pi)上でコピーしたコマンドを実行する。

Potariner Edge Agentが起動するはず。


Portainerの画面で「Environments」を再度クリックすると、

先ほど追加したEdge Agentが表示されているはず。


左ペインの「Home」をクリックすると、追加したEdge Agentが表示されているのでクリックする。


エージェントのコンテナ情報が見える。


既にdocker-composeで幾つかのコンテナを作成済みのため、

「Control」が”Limited”となっており、Portainerからは操作できない。

Portainerで管理するためには、一旦コンテナを削除(docker-compose down)してから、

Portainer上でコンテナを再作成すれば良い。


エージェントのインストール

OCI上に別の仮想マシンがあって、そこにもDockerがあるので、こちらは通常のエージェントをインストールする。


先ほどと同様にPortainerの「Environments」→「Add environment」をクリック。

今度は「Agnet」を選択する。

Environment detailsでは以下の通り設定する。

  • Name:エージェントの任意の名前
  • Environment URL:<エージェントのIPアドレス>:9001
  • Public IP:空白

Environment URLでエージェントのIPと9001ポート番号と指定するのがミソ。


その後、エージェント上で以下のコマンドを実行し、Portainerのエージェントをインストールする。


docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent:2.11.1

あとは9001/tcpをネットワークセキュリティでポート解放。

すると、Portainer上でAgentが表示される。


Portainerでコンテナ管理が楽

ホストが1台しか無い場合はコマンドだけでも管理できると思うが、

それでもdocker-composeを複数作った場合やたくさんのコンテナを作った時に煩雑になりがち。

さらにホストが増えると管理はさらにややこしくなる。

日本語化できないのが残念なところだけど、

英語でも直感的に分かるし特に問題なし。


商用利用する場合は、クラウドのコンテナサービスを使うのが圧倒的だと思うので

Portainerの出番はないかなwwwwwwww


Portainerのhttps化&リバースプロキシはちょっと長くなったので別記事に書きます。

検索

Blog Archive

Popular Posts

About Me

自分の写真
性別:男
年齢:ついに40over
趣味:Snowboard、パソコン、iPhone、子育て

仕事:ユー子の社内SEとしてサーバ、NW等のインフラ全般をやってます

日々生活していく中で思ったことなどをつらつらと書いていきます。

どうぞよろしく!

ブログランキング

ブログランキング・にほんブログ村へ

QooQ