Awesome
Docker-debug
Overview
docker-debug
is an troubleshooting running docker container,
which allows you to run a new container in running docker for debugging purpose.
The new container will join the pid
, network
, user
, filesystem
and ipc
namespaces of the target container,
so you can use arbitrary trouble-shooting tools without pre-installing them in your production container image.
Demo
Quick Start
Install the docker-debug
cli
mac brew
brew install zeromake/docker-debug/docker-debug
download binary file
<details> <summary> <kbd>use bash or zsh</kbd> </summary># get latest tag
VERSION=`curl -w '%{url_effective}' -I -L -s -S https://github.com/zeromake/docker-debug/releases/latest -o /dev/null | awk -F/ '{print $NF}'`
# MacOS Intel
curl -Lo docker-debug https://github.com/zeromake/docker-debug/releases/download/${VERSION}/docker-debug-darwin-amd64
# MacOS M1
curl -Lo docker-debug https://github.com/zeromake/docker-debug/releases/download/${VERSION}/docker-debug-darwin-arm64
# Linux
curl -Lo docker-debug https://github.com/zeromake/docker-debug/releases/download/${VERSION}/docker-debug-linux-amd64
chmod +x ./docker-debug
sudo mv docker-debug /usr/local/bin/
# Windows
curl -Lo docker-debug.exe https://github.com/zeromake/docker-debug/releases/download/${VERSION}/docker-debug-windows-amd64.exe
</details>
<details>
<summary>
<kbd>use fish</kbd>
</summary>
# get latest tag
set VERSION (curl -w '%{url_effective}' -I -L -s -S https://github.com/zeromake/docker-debug/releases/latest -o /dev/null | awk -F/ '{print $NF}')
# MacOS Intel
curl -Lo docker-debug https://github.com/zeromake/docker-debug/releases/download/$VERSION/docker-debug-darwin-amd64
# MacOS M1
curl -Lo docker-debug https://github.com/zeromake/docker-debug/releases/download/$VERSION/docker-debug-darwin-arm64
# Linux
curl -Lo docker-debug https://github.com/zeromake/docker-debug/releases/download/$VERSION/docker-debug-linux-amd64
chmod +x ./docker-debug
sudo mv docker-debug /usr/local/bin/
# Windows
curl -Lo docker-debug.exe https://github.com/zeromake/docker-debug/releases/download/$VERSION/docker-debug-windows-amd64.exe
</details>
download the latest binary from the release page and add it to your PATH.
Try it out!
# docker-debug [OPTIONS] CONTAINER COMMAND [ARG...] [flags]
docker-debug CONTAINER COMMAND
# More flags
docker-debug --help
# info
docker-debug info
Build from source
Clone this repo and:
go build -o docker-debug ./cmd/docker-debug
mv docker-debug /usr/local/bin
Default image
docker-debug uses nicolaka/netshoot as the default image to run debug container. You can override the default image with cli flag, or even better, with config file ~/.docker-debug/config.toml
version = "0.7.5"
image = "nicolaka/netshoot:latest"
mount_dir = "/mnt/container"
timeout = 10000000000
config_default = "default"
[config]
[config.default]
version = "1.40"
host = "unix:///var/run/docker.sock"
tls = false
cert_dir = ""
cert_password = ""
Todo
- support windows7(Docker Toolbox)
- support windows10
- refactoring code
- add testing
- add changelog
- add README_CN.md
- add brew package
- docker-debug version manage config file
- cli command set mount target container filesystem
- mount volume filesystem
- docker connection config on cli command
-
-v
cli args support - docker-debug signal handle smooth exit
- cli command document on readme
- config file document on readme
- add http api and web shell
Details
- find image docker is has, not has pull the image.
- find container name is has, not has return error.
- from customize image runs a new container in the container's namespaces (ipc, pid, network, etc, filesystem) with the STDIN stay open.
- create and run a exec on new container.
- Debug in the debug container.
- then waits for the debug container to exit and do the cleanup.
Reference & Thank
- kubectl-debug:
docker-debug
inspiration is from to this a kubectl debug tool. - Docker核心技术与实现原理:
docker-debug
filesystem is from the blog. - docker-engine-api-doc: docker engine api document.
Contributors
Code Contributors
This project exists thanks to all the people who contribute. [Contribute]. <a href="https://github.com/zeromake/docker-debug/graphs/contributors"><img src="https://opencollective.com/docker-debug/contributors.svg?width=890&button=false" /></a>
Financial Contributors
Become a financial contributor and help us sustain our community. [Contribute]
Individuals
<a href="https://opencollective.com/docker-debug"><img src="https://opencollective.com/docker-debug/individuals.svg?width=890"></a>
Organizations
Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]
<a href="https://opencollective.com/docker-debug/organization/0/website"><img src="https://opencollective.com/docker-debug/organization/0/avatar.svg"></a> <a href="https://opencollective.com/docker-debug/organization/1/website"><img src="https://opencollective.com/docker-debug/organization/1/avatar.svg"></a> <a href="https://opencollective.com/docker-debug/organization/2/website"><img src="https://opencollective.com/docker-debug/organization/2/avatar.svg"></a> <a href="https://opencollective.com/docker-debug/organization/3/website"><img src="https://opencollective.com/docker-debug/organization/3/avatar.svg"></a> <a href="https://opencollective.com/docker-debug/organization/4/website"><img src="https://opencollective.com/docker-debug/organization/4/avatar.svg"></a> <a href="https://opencollective.com/docker-debug/organization/5/website"><img src="https://opencollective.com/docker-debug/organization/5/avatar.svg"></a> <a href="https://opencollective.com/docker-debug/organization/6/website"><img src="https://opencollective.com/docker-debug/organization/6/avatar.svg"></a> <a href="https://opencollective.com/docker-debug/organization/7/website"><img src="https://opencollective.com/docker-debug/organization/7/avatar.svg"></a> <a href="https://opencollective.com/docker-debug/organization/8/website"><img src="https://opencollective.com/docker-debug/organization/8/avatar.svg"></a> <a href="https://opencollective.com/docker-debug/organization/9/website"><img src="https://opencollective.com/docker-debug/organization/9/avatar.svg"></a>