🚀 Docker Debug のために課金しようと思った話
2025年 04月 28日 月曜日
🚀 Docker Debug のために課金しようと思った話
はじめに
github copilot とか使って半分くらい書いてもらってます
背景
docker exec を用いた際に下記のメッセージが出たので調べてみた
nix-shell-env ❯ docker exec -ti ✘ 130
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug
Learn more at https://docs.docker.com/go/debug-cli/
docker: 'docker exec' requires at least 2 arguments
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
See 'docker exec --help' for more information
📌 Docker Debug とは?
特徴 | 内容 |
---|---|
💡 目的 | 稼働中コンテナを “そのまま” デバッグ |
🛠️ 方式 | 稼働中コンテナには名前空間 join で直接シェルを挿入。停止中コンテナ/イメージにはデバッグツール付き一時コンテナを生成してアタッチ |
🗓️ 歴史 | 2024 年 8 月以前の記事は β 版が中心。Docker Desktop 4.33 (2024-07-29) で GA へ昇格 |
📦 プリインストール | vim や curl などの開発用ツールが同梱され、nix で追加インストールも可能 |
Docker Debug は、稼働中のコンテナを再ビルドすることなくデバッグを可能にするツールです。
この仕組みでは、ターゲットコンテナとは別にデバッグ用のコンテナを作成し、以下の方法でリソースを結合します:
- MergerFS: デバッグ用コンテナとターゲットコンテナのファイルシステムを統合し、両者が同じファイルシステムを共有できるようにします。
- PID 名前空間: デバッグシェルプロセスをターゲットコンテナの PID 名前空間に参加させることで、ターゲットコンテナ内のプロセスを操作可能にします。
- ネットワーク名前空間 (任意): ネットワーク関連のコマンドを使用する場合、ネットワーク名前空間にも参加させます。
これにより、デバッグ用コンテナからターゲットコンテナの環境にシームレスにアクセスでき、効率的なデバッグが可能になります。
⚙️ 動作フロー
graph TD
subgraph ユーザ
A([docker debug 実行])
end
subgraph Docker Engine
B{{デバッグ<br>コンテナ起動}}
D[(ターゲット<br>コンテナ)]
end
subgraph デバッグ空間
C[(Debug Shell<br>+ Tools)]
end
A --> B
B --> C
B --> D
C -- MergerFS で FS 統合 --> D
C -- PID NS 参加 --> D
C -- (任意) NET NS 参加 --> D
MergerFS とは?
MergerFS は複数のファイルシステムを1つに統合して扱えるようにするオープンソースのユーティリティです。
例えば、複数のディスクやディレクトリを1つの仮想的なファイルシステムとしてマウントし、透過的にアクセスできるようにします。
Docker Debug では、この機能を利用してデバッグ用コンテナとターゲットコンテナのファイルシステムを統合しています。
公式サイト: https://github.com/trapexit/mergerfs
最終的に
- まだ課金していないです
この記事をシェア