Dockge: 超軽量なDocker Compose管理ツール、低スペックVPSでPortainerに代わる最適な選択肢

Docker tutorial - IT technology blog
Docker tutorial - IT technology blog

なぜ私は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内に各スタックのフォルダを作成します。その中に、さらにdataconfigフォルダを個別に作成することをお勧めします。新しいサーバーに移行する際は、/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を試してみてください。きっと、もう元には戻りたくなくなるはずです。皆さんのサーバー最適化が成功することを願っています!

Share: