这个项目能做什么

debux 是一个为 Docker 和 Kubernetes 环境设计的开源容器调试器。它解决了一个常见的痛点:调试缺乏 shell 或包管理器的生产型容器,例如 distroless、scratch 和精简镜像。与 `docker exec` 不同,后者要求目标镜像内部具备工具和 shell,而 debux 会启动一个独立的调试工具箱容器,附加到目标容器,共享有用的命名空间(网络、进程),并将目标文件系统暴露在 `$DEBUX_TARGET_ROOT`(通常是 `/proc/1/root`)。 主要功能包括: - **适用于任何容器**:可调试运行中、已停止、已退出或崩溃循环的容器,包括没有 shell 或包管理器的容器。 - **Docker 和 Kubernetes 支持**:为本地 Docker 容器、Docker Compose 服务、Podman 容器和 Kubernetes Pod 提供统一工作流。还支持通过主机命名空间访问来调试 Kubernetes 节点。 - **开箱即用的工具箱**:预装工具包括 curl、wget、dig、nmap、tcpdump、strace、ltrace、gdb、htop、vim、jq、git、openssh、zsh、tmux 等。工具箱基于 Wolfi,并使用 mise 进行包管理。 - **按需安装工具**:`dctl` 命令可在调试会话期间使用 mise 安装其他工具。可通过 `--tools` 在会话开始时预加载工具。 - **目标感知 shell**:跳转到目标根目录,检查目标进程,复用目标网络命名空间,并在工具箱缺少所需二进制时通过 chroot 运行目标自身的二进制文件。 - **端口转发和文件复制**:可从任何目标访问并拉取文件,即使是未使用 `-p` 启动的容器,以及 `kubectl cp` 无法工作的 distroless Pod。 - **Kubernetes 复制模式**:当临时容器被 RBAC 或准入策略阻止时,`--copy` 会创建一个临时副本 Pod 用于调试。支持带 TTL、Karpenter 保护和重新附加能力的长生命周期复制会话。 - **节点调试**:`debux node` 在 Kubernetes 节点上调度一个主机命名空间工具箱 Pod,挂载节点根文件系统,并共享 PID、网络和 IPC 命名空间。 - **镜像调试**:无需启动镜像即可进行调试,当镜像本身无法启动时非常有用。 - **TUI 界面**:全屏目标浏览器,支持 Docker、Kubernetes 上下文/命名空间导航、活动会话重新附加、最近会话和选项切换。 - **Shell 补全**:生成的补全包含实时的 Docker 和 Kubernetes 目标,支持子字符串匹配。 该工具以单个二进制文件分发,附带安装脚本,支持 amd64/arm64 架构的 Linux 和 macOS。发布资产经过校验和验证,并支持可选的 cosign 签名验证。该项目采用 MIT 许可证。