ググっているうちにたまたま見つけたのだが、Portainerというクラウドサービスが素晴らしかったので紹介したい。
PortainerはDockerコンテナをクラウド上で稼働運用できるサービスだ。
私もサーバーを使う開発ではDockerを利用することが多いが、実際ところ、ローカルPC上でDockerを使うのは結構面倒だったりする。いくつもコンテナを作るとディスク容量が圧迫されるし、コンテナを起動したまま停止し忘れると、PCのバッテリーの持ちが悪くなる。コンテナだけでなくDockerデーモンも停止しておかないと、 同様にバッテリーの減りが加速してしまう(Docker導入済みのPCでなんだか動作が遅いなぁとかバッテリーの減りが速いなぁと感じたら、最初にDockerを疑った方が良い)。
GCPやAzureなどのクラウドコンピューティングやVPSサービスなどを利用してDockerサーバーを設置するという手もあるが、OSの導入から始めないといけないのが面倒だ。それに、これらの利用料はそこそこ高いし。Dockerコンテナをそのままクラウド上で稼働できる低額のサービスがあれば良いのにと思っていたが、Portainerがまさにそれだった。
ちなみに、PortainerにはPortainer-CE(Community Edition)というフリー版が存在する。これはローカルPC上でDockerコンテナを運用できるものだ。機能的には公式のDocker Desktopと同様のものだが、これよりずっと使いやすくてブラウザから操作できるのが良い。Docker Desktopを一定規模以上の企業で利用する場合有料サブスクリプションが必要になるが、Portainer-CEは無償で使い続けることができる。
以降では、このPortainer-CEのインストール方法と使い方を説明していく。
Portainerのインストール
最初に、Portainer用のデータ・ディレクトリを作成しておく。このディレクトリには、Portainerのログイン情報やコンテナのデータベース情報などが格納される。
% mkdir portainer_data
Portainer-CEをインストールするには、下のコマンドを実行すれば良い。
% 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:latest
このコマンドは、Docker Hub上に存在するportainer-ceというコンテナを取得してDockerコンテナを生成・起動している。
なお、上記のコマンドを実行したときに、下のようなエラーが表示されることがある。
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. See 'docker run --help'.
これはDockerデーモンが起動していないという意味なので、その場合は、Docker Desktopを起動した上で再度上記のコマンドを実行すれば良い。
Portainerコンテナの起動後、ブラウザからhttp://localhost:9000
にアクセスすると、下のような画面が表示される。
[Username]と[Password]に適当な値を入力すると(Portainer-CEはローカル稼働なので、これらはどんな値でも問題ない)、下のような画面になる。
ここで[Get Started]を選択すると、Portainerの管理画面が表示される。
この画面で、Portainer自身がコンテナとして起動していることが判る。
Portainerの使い方
コンテナの作成は、上の画面の[ + Add container ]ボタンからできる。ただし、docker
コマンドに慣れているなら、そちらを使った方が楽だろう。例えば、下のようにコマンドを実行すれば、nginxによるWebサーバーのコンテナを作成できる。
% docker run -d -it -p 8080:80 --name nginx nginx
新しいコンテナが作成されると、Portainerの管理画面に反映される。
この画面から [nginx] > [Console] と辿って、[Connect] を押すと、起動中のコンテナのコンソール画面に入れる。
Portainerには、下のようなApp Templatesという名前のコンテナ・テンプレートが在って、これらを利用してコンテナを作成することもできる。
上で紹介したのはローカルPC上でコンテナを運用するPortainer-CEだが、同じ使い勝手でPortainerのクラウド上にコンテナを作成運用できるPortainer-BE(Business Edition)もある。このサービスの最低プランなら$149/年で15個のコンテナを作成できる(本記事執筆時点のプラン内容)。メジャーなクラウドコンピューティングやVPSサービスと比べると、この価格は安いと思う。
Dockerを多用してバックエンド開発をするエンジニアにとって、Portainerは福音とも言えるクラウドコンピューティング・サービスではないだろうか。
【参照サイト】