なぜ私はPortainerをやめてDockgeに乗り換えたのか?
Dockerを使用している場合、管理ツールとして最初に思い浮かぶのはPortainerでしょう。Portainerは、スタンドアロンからSwarm、Kubernetesまでサポートする非常に強力なツールです。しかし、その多機能さは時として負担になります。特に、1GB RAM程度の低スペックなVPSで数個のComposeスタックを動かすだけのユーザーにとって、Portainerは少々オーバースペックです。
私が管理している小規模なサーバー群(約12スタック)では、Portainerは通常150MBから200MBのRAMを消費していました。さらに悪いことに、ディスク上のdocker-compose.ymlファイルとUI上の設定の間で同期がずれる問題に時々遭遇していました。それが、私がDockgeに切り替えた理由です。これは、あの有名な監視ツール「Uptime Kuma」の開発者である Louis Lam 氏によるプロジェクトです。
Dockgeはすべてをこなそうとはしません。ただ一つのこと、つまりDocker Composeの管理だけに集中しています。インターフェースは非常に滑らかでレスポンスが速く、何よりユーザーのファイル構造を最大限に尊重してくれます。
Dockgeの「File-system first」という哲学
独自データベースに設定を保存するPortainerとは異なり、Dockgeはファイルシステムベースで動作します。UI上でのすべての操作は、ストレージ上の.yamlファイルに直接書き込まれます。このアプローチは透明性が高く、より安全です。
DockgeとPortainerの違いは何ですか?
- ファイル管理: 各スタックは専用のディレクトリに配置されます。ターミナルでファイルを編集すると、Dockgeは即座にそれを認識します。
- スピード: モダンな技術を採用しているため、ページの切り替えやログの読み込みに遅延がほとんどありません。
- 統合ターミナル: ブラウザ上でコンテナと対話する体験が非常にリアルで、ラグを感じさせません。
1GB RAMのVPSでDockgeに切り替えたところ、Portainerと比較して約120MBのRAMを節約できました。この空き容量があれば、WordPressのインスタンスをもう一つ動かしたり、小さなTelegramボットを走らせたりするのに十分です。
5分でできるDockgeのインストール
DockerとDocker Composeがインストールされていることが前提です。まだの方は、以前の基本ガイドを確認してください。
ステップ 1: ディレクトリ構造の作成
スタックを一箇所にまとめるために、専用のディレクトリを作成します。これにより、将来のバックアップやサーバー移転が非常に楽になります。
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
ステップ 2: Dockge用のComposeファイルの作成
nano compose.yamlコマンドを実行し、以下の内容を貼り付けます:
version: "3.8"
services:
dockge:
image: louislam/dockge:1
restart: always
ports:
- 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
- /opt/stacks:/opt/stacks
environment:
- DOCKGE_STACKS_DIR=/opt/stacks
注意: DOCKGE_STACKS_DIR環境変数はシステムの心臓部です。これは、プロジェクトを保存する場所をDockgeに伝えます。コンテナのアップグレード時にデータが失われないよう、対応するボリュームを必ずマウントしてください。
ステップ 3: 起動
おなじみのコマンドを実行します:
docker compose up -d
あとはブラウザで http://あなたのIPアドレス:5001 にアクセスするだけです。管理者アカウントを作成して、使い始めてみましょう。
よりプロフェッショナルなスタック管理
Dockgeのインターフェースは非常に馴染みやすいです。新しいサービス(例:Nginx)を追加するには、左上の「Compose」ボタンを押すだけです。
「二面性」を持つYAMLエディタ
私が最も気に入っている機能は、リアルタイムのレンダリング機能です。左側でYAMLを入力すると、右側にDockgeが自動的に入力項目(Image, Ports, Volumes)を生成します。どちら側で編集しても、もう一方が自動的に同期されます。これにより、YAMLでありがちなインデントのミスを防ぐことができます。
シンプルなNginxをデプロイしてみましょう:
services:
my-web:
image: nginx:latest
ports:
- 8080:80
restart: always
Deployをクリックすると、下にコンソールウィンドウが表示されます。docker pullの進行状況がリアルタイムで確認できます。Portainerのように、システムがフリーズしているのかどうかを推測する必要はありません。
ワンクリックでコンテナを更新
Dockgeでのイメージ更新は非常に快適です。Updateボタンを押すだけで、Dockgeが自動的に新しいイメージをプルし、古いスタックを停止して新しいスタックを立ち上げます。すべてが数秒で完了します。
私からの実践的なアドバイス
個人プロジェクトやステージング環境でDockgeを6ヶ月間使用して得た、いくつかのヒントを紹介します。
1. 計画的なフォルダ構成
Dockgeは/opt/stacks内に各スタックのフォルダを作成します。その中に、さらにdataとconfigフォルダを個別に作成することをお勧めします。新しいサーバーに移行する際は、/opt/stacksフォルダを丸ごと圧縮するだけで、作業の100%が完了します。
/opt/stacks/
├── nginx-proxy/
│ ├── compose.yaml
│ └── data/
└── uptime-kuma/
└── compose.yaml
2. Dockge + Nginx Proxy Manager (NPM) のコンボ
Dockge自体にはドメインやSSLの管理機能はありません。最も効率的な方法は、Dockgeを使用してNPMスタックを管理することです。NPMをフロントに配置することで、他のすべてのサービスに対してLet’s EncryptのSSLを適用できます。これはHomelabを楽しむエンジニアにとって最強の組み合わせです。
3. セキュリティについて
Dockgeにはログイン機能がありますが、5001ポートを直接インターネットに公開すべきではありません。Basic認証を前段に置くか、Cloudflare Zero Trustなどを使用してください。Dockerの管理画面をハッカーにさらしてはいけません。
おわりに
Dockgeは、ミニマリズムを愛する人々にとって、まさに小さな革命です。大企業向けの複雑な権限管理(RBAC)機能は欠けているかもしれませんが、個人利用や小規模VPSにおいてはナンバーワンの選択肢です。速さ、軽さ、そして透明性が手に入ります。
もしPortainerが重すぎると感じているなら、今日からDockgeを試してみてください。きっと、もう元には戻りたくなくなるはずです。皆さんのサーバー最適化が成功することを願っています!

