単純にDockerfileを用意して、イメージつくって、コンテナ立ち上げるくらいなら簡単だが、コンテナの数が増えてくると手に負えない。
そこでPortainerというツールをオススメする。
PortainerはDockerホストをブラウザから操作するための軽量な管理ツールだ。LinuxだけでなくWindowsでもmacOSでも使う使うことができる。
※ Windowsのみ、Portainerが動いているDockerホストを管理することができない
もともとはUI for Docker(a.k.a. DockerUI)だったのが、Portainerに名前を変えて開発が継続されているらしい。
1. Dockerをインストールする
Portainerを利用するにはDockerをつかってデプロイするのが簡単だ。(ニワトリが先か、卵が先か、みたいになっちゃうけど)
もちろんDockerを使わなくてもデプロイすることができる。詳しくはドキュメントのWithout Dockerを参照してほしい。
Dockerなどのコンテナ利用に特化したCoreOSというものもあるが、今回は無難にCentOS 7.2をつかう。
Dockerインストール用のシェルスクリプトを用意した。「setup.sh」のような名前をつけて保存し実行すれば面倒な手順を踏まずにDockerをインストールすることができる。
#!/bin/bash
# CentOS 7.x
yum update -y
# Install Docker
tee /etc/yum.repos.d/docker.repo <<-'__EOF__'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
__EOF__
yum install docker-engine -y
systemctl enable docker.service
systemctl start docker
WindowsやmacOSの場合は、Docker for Windows/Macをインストールすれば良い。
2. Portainerをインストールする
Portainerのインストールは、DockerHubからPortainerのイメージをダウンロードして起動するだけでできる。
# portainerが動いているDockerホストを管理する場合(Linux or Mac)
$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
# リモートのDockerホストを管理する場合
$ docker run -d -p 9000:9000 portainer/portainer
この1行で、http://DOCKER_HOST:9000に接続するとPortainerにアクセスすることができる。DOCKER_HOSTはDockerが入っているサーバのIPアドレスや、ローカル環境ならlocalhostになる。
コマンドで「-p 9000:9000」になっているところを書き換えれば、9000番以外のポートでも接続できる。
(例: 「-p 123:123」 → http://DOCKER_HOST:123
3. Portainerにアクセスし、初期設定を行う
Docker上で動いているPortainerにアクセスする。
3.1. 管理者のパスワードを設定する
はじめてhttp://DOCKER_HOST:9000にアクセスすると、http://DOCKER_HOST:9000/#/authにリダイレクトされるので、管理者(admin)のパスワードを入力し、Validateボタンをクリックする。※ パスワードは8文字以上
※ パスワードはあとで変更できる
3.2. 管理者でログインする
先ほど設定したパスワードで、管理者としてログインする。- ユーザ名: admin
- パスワード: 「3.1. 管理者のパスワードを設定する」で設定したパスワード
3.3. 接続先(管理するDockerホスト)を指定する
今回はPortainerが動いているDockerホストを管理したいので、「Manage the Docker instance where Portainer is running」を選択する。もし自身以外のDockerホストを管理したい場合は、「Manage a remote Docker instance」を選択し、以下の項目を入力する。
- Name: 接続先の名前(Portainer上で表示する名前)
- Endpoint URL: 接続先のIPアドレスやURL
- TLS: TLSで接続するときにサーバ証明書などを設定する
3.4. 設定完了
これでPortainerのすべての初期設定が完了した。4. Portainerの機能を使う
PortainerにはDockerのイメージやコンテナを管理するための機能がたくさん備わっている。ということで、ひとつずつ紹介する。
4.1. Dashboard
Dockerホストの情報やイメージ、コンテナの数などが一覧で見ることができる。4.2. Add Templates
あらかじめイメージのテンプレートが用意されており、たった2clickでコンテナを立ち上げることができる。リソース名や開放するポート、ユーザのパスワードなどの指定もできる。4.3. Containers
コンテナのステータス確認をはじめ、起動、停止、追加、削除などができる。一覧に見えているのは「docker ps -a」をした結果。
起動や停止は「docker run」や「docker stop」が実行される。
コンテナの名前をクリックすると、詳細をみることができる。
そこではコンテナに入ってコンソールを操作したり、ログを見たりできる。コマンドでやろうとするとちょっと面倒なので、こうやってGUIから操作できるのは本当に便利だ。
4.4. Images
Dockerイメージの一覧が確認できる。一覧で見えているのは「Docker images」をした結果。またDocker Hubで公開されているイメージを取得したり、直接レジストリのURLを指定して取得することもできる。イメージ名をクリックすると、その詳細も確認できる。
4.5. Networks
Dockerのネットワーク設定について確認することができる。ただ私自身、ネットワークの機能を使ったことがないので、詳しいことは割愛させていただく。
4.6. Volumes
ホストからコンテナにマウントしているボリューム(ディレクトリ/ファイル)の一覧が確認できる。4.7. Events
Dockerコマンドの実行履歴やイメージやコンテナを操作したときのログなどが確認できる。4.8. Docker
Docker Engineのバージョン情報やステータスが確認できる。テストでは1コア/1GBのインスタンスで動かしているので、そのように表示されている。
4.9. Password
はじめてPortainerにアクセスしたときに設定した管理者(admin)のパスワードを変更することができる。4.10. Endpoints
リモートのDockerホストを管理するときは、ここでEndpointの追加を行う。この記事では、Portainerが動いているDockerホストを見ているので、URLが「/var/run/docker.sock」になっている。さいごに
私自身Docker初心者で、簡単なイメージの作成やコンテナの起動以外はほとんどわからない。それでもGUIを使うことで、面倒なコマンド類を覚えることなく使えるのは便利だし、学びたいことに集中できる。(サーバサイドのアプリが作りたいのに、Dockerのコマンドを覚えるみたいなことをしなくてすむのはありがたい)
まだ、細かい所は触れていないので、Portainerのポテンシャルを計り知れていない。
ためしに以前つくった自分のアプリを動かしてみたが、SSHでサーバに接続しDockerコマンドを打たなくてすむので重宝している。
参考サイト
- portainer/portainer: Simple management UI for Docker
- Portainer documentation — Portainer 1.11.1 documentation
- Docker Documentation - Docker
以上
written by @bc_rikko
0 件のコメント :
コメントを投稿