Docker を GUI で管理する Portainer.io を入れてみた備忘録です.
Docker を使い始めたは良いのですが,所詮個人的なサーバーで使うだけで,そんなしょっちゅう使うって訳でもないので,コマンドラインの管理だとちょっと辛い.と言うことで,GUI で操作できる Portainer.io を入れてみました.なお,Portainer.io を選んだ理由は,
- Docker Image として導入できる.
- 比較的簡単そうだった.
の2つです.
Docker GUI 管理と言えば Rancher
![](https://www.rancher.com/assets/img/logos/logo-square.png)
みたいですが,これは本格的すぎていきなりは使い方がよくわからなかった(Docker の方もまだアヤフヤなのに…)ってのもあります.
導入の仕方
提供元は
です.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
にアクセスして,
の順に設定すれば 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 を有効にするにはもちろん証明書が必要ですが,これはすでに用意されていて,サーバーにコピー済みとします.なお,証明書の作り方は,
![](https://www.labohyt.net/blog/wp-content/uploads/2016/05/googlerss.png)
にある通りですが,サーバーの秘密鍵からあらかじめ秘密鍵を削除しておくひつようがあります(この方法も上のページに書いてある).
ここではサーバーの秘密鍵と公開鍵をそれぞれ,
- ~/portainer/certs/portainer.key (秘密鍵)
- ~/portainer/certs/portainer.crt (公開鍵)
に配置したとしています.また,docker run … で,ファイルのアクセス時に「Permission denied」と怒られる場合は,
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9ZG9ja2VyJUUzJTgxJUE3JUU1JTg1JUIxJUU2JTlDJTg5JUUzJTgzJTg3JUUzJTgyJUEzJUUzJTgzJUFDJUUzJTgyJUFGJUUzJTgzJTg4JUUzJTgzJUFBJUUzJTgyJTkyJUU1JTg4JUE5JUU3JTk0JUE4JUUzJTgxJTk3JUUzJTgxJTlGJUUzJTgxJThDJUUzJTgwJTgxJUUzJTgwJThDUGVybWlzc2lvbiUyMGRlbmllZCVFMyU4MCU4RCVFMyU4MSU4QyVFNSU4NyVCQSVFMyU4MSVBNiVFMyU4MiVBMiVFMyU4MiVBRiVFMyU4MiVCQiVFMyU4MiVCOSVFMyU4MSVBNyVFMyU4MSU4RCVFMyU4MSVBQSVFMyU4MSU4NCVFMyU4MCU4MiUyMCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YWJiNTE0MjY3NWRiZjE1NTBjNDU4ZjFlODZjMzE4YmY&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTcxNiZ0eHQ9JTQwc2h1aWNoaXJvJTIwaW4lMjAlRTMlODIlQjglRTMlODMlQTMlRTMlODMlOTElRTMlODMlQjMlRTMlODIlQjclRTMlODIlQjklRTMlODMlODYlRTMlODMlQTAlRTYlQTAlQUElRTUlQkMlOEYlRTQlQkMlOUElRTclQTQlQkUmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zMiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWQ5YjUyZmY2NmIzOWQ3NGQxYzFmNWJiYmYzOTlkMjAx&blend-x=142&blend-y=491&blend-mode=normal&s=4f8ef7e4941a86d704e0403e823dd87f)
によると,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 でも自動起動を設定することももちろんできます.
これでだいぶん管理しやすくなりました.あと,綺麗に消せるのも良いです.しばらくこれで運用してみたいと思います.
以上!