【ITニュース解説】Portainer CE on Docker: Install, Stacks and Git Updates
2026年10月22日に「Dev.to」が公開したITニュース「Portainer CE on Docker: Install, Stacks and Git Updates」について初心者にもわかりやすく解説しています。
ITニュース概要
Portainer CEはDockerをWebブラウザで操作・管理する便利なツールだ。Docker Composeで簡単に導入でき、既存のDockerアプリをPortainerで管理する方法、Git連携でコード変更時に自動更新する手順を解説する。バックアップやアップグレードも網羅し、Docker運用を効率化する。
ITニュース解説
Portainerは、Docker環境を管理するための強力なウェブベースのツールである。コマンドラインでの複雑な操作を、ブラウザの直感的なインターフェースを通じて視覚的に行えるようにする。これにより、コンテナの起動・停止、イメージの管理、ネットワーク設定、ボリュームの操作といったDockerのさまざまな要素を簡単に管理できる。特に複数のコンテナで構成されるアプリケーション群を「スタック」(Docker Composeプロジェクト)として一元的にデプロイ・管理する際にその真価を発揮し、Gitリポジトリと連携して自動デプロイを行う機能も備えている。すでに多くの開発者に利用されており、その信頼性と有用性は高い。
Portainer CE(Community Edition)をインストールするには、Docker Composeを使用するのが一般的である。まずDocker Composeファイルを作成し、Portainerコンテナの定義を行う。この定義には、PortainerがDockerデーモンと通信できるように/var/run/docker.sockというファイルをコンテナ内部に共有する設定が含まれる。これはPortainerにDockerホストの操作権限を与えるために必要であり、PortainerのUIはルートアクセスに等しい権限を持つため、そのセキュリティには十分な注意が必要である。また、Portainerの設定データがコンテナを削除しても失われないよう、portainer_dataという名前付きボリュームを設定して永続化する。ウェブUIへのアクセスは、127.0.0.1:9443に限定して公開することが推奨される。これにより、外部ネットワークから直接Portainerにアクセスされることを防ぎ、セキュリティを強化できる。docker compose up -dコマンドでコンテナを起動すれば、Portainerのインストールは完了する。ポート9443はUIとAPIを提供し、自己署名証明書を利用するため、初回アクセス時にはブラウザで証明書の警告を承認する必要がある。
Portainerへの初回ログイン時には、管理者アカウントの作成が求められる。この際、Portainerコンテナのログに出力される「セットアップトークン」が必要となる。このトークンはセキュリティ保護のために設定されており、docker logs portainerコマンドを実行してログからトークンを抽出し、5分以内に管理者ユーザー名とパスワードと共に設定を完了しなければならない。もし5分以内に設定が完了しなかった場合、Portainerはセキュリティ上の理由から管理者作成機能を一時的に停止する。この状態になった場合は、docker restart portainerコマンドでPortainerコンテナを再起動すれば、新しいセットアップトークンが生成され、再び5分間の猶予が与えられるので、その間に設定を完了させる。
Portainerを導入する前からdocker composeコマンドで起動していたアプリケーション(プロジェクト)は、Portainerの画面上では「Limited」と表示され、編集や詳細な管理ができない場合がある。これはPortainerがそのプロジェクトのComposeファイルを管理していないために発生する。この「Limited」状態からPortainerで完全に管理できる「Total control」の状態にするには、既存のアプリケーションを一度停止し、Portainerを通じて同じComposeファイルでデプロイし直す必要がある。具体的には、元のプロジェクトのフォルダでdocker compose downコマンドを実行してコンテナを停止するが、このときアプリケーションのデータが保存されているボリュームを削除しないよう、-vオプションは付けない。その後、Portainerの「Stacks」画面から「Add stack」を選択し、元のプロジェクトと全く同じ名前でComposeファイルをデプロイする。これにより、既存のデータボリュームがそのまま利用され、アプリケーションのデータが失われることなく、Portainerで完全に管理できるようになる。ただし、Composeファイル内で相対パスで指定されたボリュームは、Portainerによるデプロイ場所の違いから予期せぬ挙動を示すことがあるため、絶対パスに修正する必要がある場合がある。
PortainerはGitリポジトリと連携し、リポジトリにあるComposeファイルを直接デプロイし、リポジトリの更新に合わせて自動的にアプリケーションを再デプロイする機能を持つ。まずPortainerにGitリポジトリを「ソース」として登録する。認証が必要なプライベートリポジトリの場合は、ユーザー名とアクセストークンを設定する。自動更新の方法は主に二つある。一つは「ポーリング」で、Portainerが設定された時間間隔で定期的にGitリポジトリをチェックし、変更があれば自動的にデプロイを実行する。もう一つは「ウェブフック」で、Gitリポジトリに変更がプッシュされたときに、GitサーバーからPortainerの特定のURLへ通知を送り、それを受けてPortainerがデプロイを実行する。ウェブフックのURLは認証なしで動作するため、パスワードのように厳重に管理し、不正なアクセスを防ぐ必要がある。PortainerのCommunity Edition (CE)とBusiness Edition (BE)では、利用できるGitOps機能に違いがある場合があるため、自身のPortainerバージョンで期待する機能が利用可能か事前に確認することが重要である。新しいバージョンのイメージに更新するには、Gitリポジトリ内のComposeファイルのイメージタグを変更してプッシュする必要がある。
Portainer自体の設定(ユーザー情報、環境設定、スタック定義、TLS証明書など)は、Portainerの管理画面の「Settings」からバックアップファイルをダウンロードして保存できる。このバックアップファイルにはアプリケーションのデータは含まれないため、アプリケーションのデータボリュームは別途バックアップする必要がある。Portainerを新しいバージョンにアップグレードする場合、Docker Composeファイル内のイメージタグを新しいバージョンに変更し、docker compose pullコマンドで新しいイメージを取得した後、docker compose up -dコマンドでコンテナを再作成する。この際、Portainerの設定データが保存されているportainer_dataボリュームはそのまま利用されるため、以前の設定や管理していたスタックは保持される。アップグレード中もPortainerが管理しているアプリケーションのコンテナは停止せずに稼働し続けることがほとんどである。Portainerはデータベースのバージョンアップも自動的に行い、古いバージョンへのロールバックが必要になった場合に備えて、アップグレード前にデータベースのバックアップを自動で作成する機能も備えている。
PortainerのウェブUIは、Dockerホストへのルートアクセスに匹敵する強力な権限を持つため、そのアクセスには最大の注意を払う必要がある。UIはlocalhostに限定して公開するか、VPN経由でアクセスを許可するか、Nginx Proxy Managerなどのリバースプロキシを介してHTTPSで保護し、アクセスを特定のユーザーに限定することが強く推奨される。Portainer自体はアイドル時には比較的少ないメモリとCPUしか使用しないため、システムリソースへの負担は低い。