Dockhandを使い始めた
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 サーバーが待ち受けされます。
![]()
残念ながら WebUI は英語のみ対応です。 まあ、英語でも読めるので支障はないです。
環境設定
初期状態ではホストを含めどの Docker も管理下にないので、設定をしなければなりません。
![]()
dockhand を導入したホストは Socket 通信で管理できます。
![]()
それ以外のホストは Docker Engine API か、Dockhand 開発元が提供する Hawser エージェントを導入することで管理下に置くことができます。 自分は Tailscale で相互に疎通が取れるので Docker Engine API を使用することにしました。
使い方
Docker イメージを直接起動する
- 左のメニューの「Containers」から Containers 画面を開き、「+ Create」ボタンを押します。
- 任意のイメージを指定し、「Pull」します。
- Docker の起動に必要な諸々の設定やオプションを設定します。
- 「Create container」を押下すればコンテナが作成されます。
各コンテナの詳細を表示することも可能です。
![]()
リソース使用状況やログ、イメージのレイヤーの詳細、プロセスやファイルシステムなどを確認することが可能です。
Docker Compose から起動する
- 左のメニューの「Stack」から Stack 画面を開き、「+ Create」ボタンを押します。
- 「Stack name」を入力します。小文字英数字が使えます。compose のスタック名です。
- 左のコードを入力する部分に compose.yaml の中身を記入します。
- 右では
.envが設定可能です。鍵マークを押すと暗号化されます。-
${VAR}という形式で左の compose.yaml の中に変数を埋め込むことが可能です。
-
- 「Create & Start」を押下すればコンテナがデプロイされ、起動します。
ライセンス
公式サイト曰く、永久無料らしいです。 Finsys/dockhand
現在は Business Source License 1.1 (BSL 1.1)を適用しており、2029 年に Apache 2.0 へ移行するそうです。
まとめ
ホームラボに Docker を管理できる Dockhand を導入してみました。 軽く使った感じでは、軽量かつ多機能でとても良さそうで、自分の用途では十分そうです。
自分は知らなかったのですが、Portainer や Arcane といった似たようなプロダクトもあるらしいですね。
個人的な不満点としては環境の取り違えが怖いので、ホストごとにヘッダーか背景の色を変更できるととても嬉しいなと思いました。
ぶ!ログ