Dockerの管理

今まで色々なサービスを公開/運用していましたが、ここ数年は Docker Compose を使ったものでした。 管理としては素朴にSSHシェルに入ってdocker composeコマンドを使用した方法でした。 管理ホストが 1 つしか無かった上、安定していたり個人開発をあまり行っていなかったため、特に大きな問題も起きることがありませんでした。

現在、サーバーの老朽化を理由に Proxmox 仮想化基盤へのリプレース作業を行っており、ベアメタルから仮想マシンへと移行しています。所謂 P2V ですね。 それに伴い、依存や境界分離の観点から複数の VM を使用した構成へと移行している最中です。

今まで通り、それぞれのホストに SSH してコマンドを叩いてもよいのですが、管理が煩雑になる上、一目で状態を確認したいなんてことも多かったため、「Dockhand」という管理ツールを使用することにしました。

Dockhand の導入

公式サイトに書いてあるとおり、Docker Compose でポンするだけで簡単です。

services:
  dockhand:
    image: fnsys/dockhand:latest
    container_name: dockhand
    restart: unless-stopped
    ports:
      - 3000:3000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - dockhand_data:/app/data

volumes:
  dockhand_data:

初期では SQLite、オプションとして PostgreSQL が DB として使用できます。

通常通り Docker Compose で起動します。

docker compose up -d

3000 番ポートで Web サーバーが待ち受けされます。

Dockhand Dashboard

残念ながら WebUI は英語のみ対応です。 まあ、英語でも読めるので支障はないです。

環境設定

初期状態ではホストを含めどの Docker も管理下にないので、設定をしなければなりません。 Settings Environment

dockhand を導入したホストは Socket 通信で管理できます。 Add environment

それ以外のホストは Docker Engine API か、Dockhand 開発元が提供する Hawser エージェントを導入することで管理下に置くことができます。 自分は Tailscale で相互に疎通が取れるので Docker Engine API を使用することにしました。

使い方

Docker イメージを直接起動する

  1. 左のメニューの「Containers」から Containers 画面を開き、「+ Create」ボタンを押します。 Create New Container
  2. 任意のイメージを指定し、「Pull」します。 Pull Image Modal
  3. Docker の起動に必要な諸々の設定やオプションを設定します。 Container Setting Modal
  4. 「Create container」を押下すればコンテナが作成されます。 Containers List2

各コンテナの詳細を表示することも可能です。 Container details

リソース使用状況やログ、イメージのレイヤーの詳細、プロセスやファイルシステムなどを確認することが可能です。

Docker Compose から起動する

  1. 左のメニューの「Stack」から Stack 画面を開き、「+ Create」ボタンを押します。 Create New Stack
  2. 「Stack name」を入力します。小文字英数字が使えます。compose のスタック名です。 Stack Name Input
  3. 左のコードを入力する部分に compose.yaml の中身を記入します。
  4. 右では.envが設定可能です。鍵マークを押すと暗号化されます。
    • ${VAR}という形式で左の compose.yaml の中に変数を埋め込むことが可能です。 Stack Environment
  5. 「Create & Start」を押下すればコンテナがデプロイされ、起動します。 Stack List

ライセンス

公式サイト曰く、永久無料らしいです。 Finsys/dockhand

現在は Business Source License 1.1 (BSL 1.1)を適用しており、2029 年に Apache 2.0 へ移行するそうです。

まとめ

ホームラボに Docker を管理できる Dockhand を導入してみました。 軽く使った感じでは、軽量かつ多機能でとても良さそうで、自分の用途では十分そうです。

自分は知らなかったのですが、Portainer や Arcane といった似たようなプロダクトもあるらしいですね。

個人的な不満点としては環境の取り違えが怖いので、ホストごとにヘッダーか背景の色を変更できるととても嬉しいなと思いました。