开发与运维工具链
Netshoot
厂商/来源:
nicolaka
核心功能:
“给瞎子开天眼”。当你的业务容器为了追求极小体积(如 5MB 的 Alpine)而删光了所有网络工具时,用它进行“灵魂附体”式排障。
| 适用场景 | 调试无工具的基础镜像 (Distroless/Alpine)、抓取特定 Pod 的包、K8s/Docker 疑难网络排障 |
| 架构支持 | Docker 镜像 (极其庞大,里面塞满了网络黑客工具) |
| 核心机制 | 网络命名空间共享 (Network Namespace Injection) 这是最硬核的黑科技。你不需要在业务容器里 apt install tcpdump(生产环境也不允许)。<br> 你只需要运行:docker run -it --network container:<业务容器ID> nicolaka/netshoot。 Netshoot 会直接“寄生”到业务容器的网络里,你在这个急救箱里敲的任何 netstat、tcpdump、nslookup,看到的都是业务容器真实的网络状态! |
| 内置兵器库 | tcpdump, iperf, nmap, tshark, jq, curl, telnet, mtr……应有尽有。 |
| 避坑指南 | [文件系统隔离] 1. 看不到业务文件:共享的只是 网络 (Network Namespace),并不是文件系统。你在 Netshoot 里无法修改业务容器的 /etc/nginx/nginx.conf。对策:如果遇到文件问题,依然需要通过宿主机挂载目录来修改。 2. K8s 环境用法:在 Kubernetes 下,不能直接用 Docker 命令。需要使用 kubectl debug -it <pod-name> --image=nicolaka/netshoot --target=<container-name> 挂载临时排障容器 (Ephemeral Containers)。 |
| 推荐搭配 | [Distroless 安全容器] [Kubernetes 集群] |