Docker を GUI で管理する portainer.io を入れてみた備忘録

Networks
Photo by hyt.

Docker を GUI で管理する Portainer.io を入れてみた備忘録です.

Docker を使い始めたは良いのですが,所詮個人的なサーバーで使うだけで,そんなしょっちゅう使うって訳でもないので,コマンドラインの管理だとちょっと辛い.と言うことで,GUI で操作できる Portainer.io を入れてみました.なお,Portainer.io を選んだ理由は,

  • Docker Image として導入できる.
  • 比較的簡単そうだった.

の2つです.

Docker GUI 管理と言えば Rancher

Innovate Everywhere
Rancher, the open-source multi-cluster orchestration platform, lets operations teams deploy, manage and secure enterpris...

みたいですが,これは本格的すぎていきなりは使い方がよくわからなかった(Docker の方もまだアヤフヤなのに…)ってのもあります.

導入の仕方

提供元は

Container management software for Docker, Kubernetes & Nomad
Portainer's hybrid & multi-cloud container management software supports Kubernetes, Docker, Swarm in any Data Center, Cl...

です.PORTAINER COMMUNITY EDITION ならフリーです.導入の仕方は,

Install Portainer
Choose to install Portainer Business Edition or Portainer Community Edition.

にある通り,ローカルの docker を管理できるよう,ただ動かすだけなら,

$ docker volume create portainer_data
portainer_data

$ docker run -d --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Unable to find image 'portainer/portainer:latest' locally
Trying to pull repository docker.io/portainer/portainer ... 
latest: Pulling from docker.io/portainer/portainer
d1e017099d17: Pull complete 
0b1e707a06d2: Pull complete 
Digest: sha256:d6cc2c20c0af38d8d557ab994c419c799a10fe825e4aa57fea2e2e507a13747d
Status: Downloaded newer image for docker.io/portainer/portainer:latest
72203cd5df220a04abe89372e98163608a37b2ce1074202affca9d4bb1886845

$ docker ps
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                    NAMES
72203cd5df22        portainer/portainer   "/portainer"        35 seconds ago      Up 33 seconds       0.0.0.0:9000->9000/tcp   portainer

として,

http://[portiner を導入したサーバのIPアドレス]:9000

にアクセスして,

Photo by hyt.

Photo by hyt.

Photo by hyt.

の順に設定すれば OK でした.

大きさは 100M 切ってますし,画面の作りも分かり安くて良い感じです.しかし,残念ながら https ではなくて http なので,ブラウザが危険だと訴えてくるのがかなりうざったい.

と言うことで,SSL で接続できるよう設定することにしました.

削除の仕方

と,その前に,一応削除の仕方を確認しておきます.

試しにストップして,コンテナとボリューム portainer_data を削除し,もう一度起動してみます.

$ docker stop portainer
portainer.io

$ docker rm portainer
portainer.io

$ docker volume rm portainer_data
portainer_data

$ docker run -d --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
ec2ccef231305b09961674da5219ef0b70130a1a49837d4e56af08a6a167533f

$ docker ps
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                    NAMES
ec2ccef23130        portainer/portainer   "/portainer"        28 seconds ago      Up 26 seconds       0.0.0.0:9000->9000/tcp   portainer

完全に設定が初期化されていることが確認できます.試しに,今度はコンテナの削除のみ行い,ボリューム portainer_data は削除しないと,

$ docker stop portainer
portainer

$ docker rm portainer
portainer

$ docker run -d --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
4ab623b441db645660ab76b3b786c753a7e742fab2fc8727fbdedf684cc86877

の通り,予想通り設定は保たれたままです.

SSL を有効にする

SSL を有効にするにはもちろん証明書が必要ですが,これはすでに用意されていて,サーバーにコピー済みとします.なお,証明書の作り方は,

ローカルな認証局 を CentOS7 で作り,運用する備忘録
ローカルな認証局 を CentOS7 で作る備忘録です. はじめに 早いもので, から2年経ち,使っていた証明書の期限が迫ってきました.もちろん証明書を更新しないといけないのですが,以前使っていた Windows 2012 の認証局は廃止し...

にある通りですが,サーバーの秘密鍵からあらかじめ秘密鍵を削除しておくひつようがあります(この方法も上のページに書いてある).

ここではサーバーの秘密鍵と公開鍵をそれぞれ,

  • ~/portainer/certs/portainer.key (秘密鍵)
  • ~/portainer/certs/portainer.crt (公開鍵)

に配置したとしています.また,docker run … で,ファイルのアクセス時に「Permission denied」と怒られる場合は,

dockerで共有ディレクトリを利用したが、「Permission denied」が出てアクセスできない。 - Qiita
事象 dockerにてホストのディレクトリをコンテナと共有をしようと思ったが、「Permission denied」が出てアクセスできなかった。 使用した環境 サーバ:Microsoft Azure OS:Red Hat ...

によると,SELinux を切るか,

  • docker run … -v~/portainer/certs:/certs:Z …

のように,Z を付加して起動すると良いようです.

あとは以下の通り起動することで,https でアクセスできるようになります.

$ docker stop portainer
portainer

$ docker rm portainer
portainer

$ docker run -d --name portainer -p 443:9000 -v ~/portainer/certs:/certs:Z -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer --ssl --sslcert /certs/portainer.crt --sslkey /certs/portainer.key

$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                   NAMES
cc817fdeeca8        portainer/portainer   "/portainer --ssl ..."   3 seconds ago       Up 2 seconds        0.0.0.0:443->9000/tcp   portainer

アクセスできることを確認できたら,ホストマシンが再起動してもきちんと自動起動するように設定します.

$ docker update --restart=always portainer
portainer

Portiner でも自動起動を設定することももちろんできます.

これでだいぶん管理しやすくなりました.あと,綺麗に消せるのも良いです.しばらくこれで運用してみたいと思います.

以上!

NetworksServer
スポンサーリンク
Following hyt!
hyt adversaria
タイトルとURLをコピーしました