原由
- 我在平时工作中经常使用
docker来创建自己的开发环境,比如mysql,redis之类的。 - 有些时候需要把现有的容器里的服务配置进行变更,
docker exec进入容器后发现很多基础命令工具(vim, nano)都没有,这让我很难受。 - 再后来看到 @github/aylei 的 kubectl-debug 发现了容器之间可以共享各种资源。
- 但是
kubectl-debug只能够提供给kubernetes进行使用,所以我这边模仿了kubectl-debug写了一个docker-debug。
原理
简单说: docker-debug 是一个命令行工具, 支持用户用 docker-debug CONTAINER_NAME 这样的指令, 对指定 Pod 中的目标容器进行 debug. 它的背后其实就是帮用户启动了一个新容器, 并且加入到目标容器的 pid, user, network, ipc 和 filesystem 中, 这时新容器当中的各种排障工具和脚本就可以用起来了. 而与此同时, 所有的业务容器不需要预装任何其它工具.
做完之后自己用了一下, 确实舒服了很多, 尤其是很多容器, 用的 alpine 当基础镜像, 啥都没有, 要 debug 的时候先进去 apk add 一波是真的很难受...
命令行录制
感谢
- @rayingecho 的 kubectl-debug 给我想法。
- @draveness 的博文 Docker 核心技术与实现原理 让我找到如何把文件系统共享。
项目地址
附上 项目地址, 欢迎大家试用反馈。