Follow @dockviz for updates.
dockviz: Visualizing Docker Data
This command takes Docker image and container information and presents in different ways, to help you understand what's going on inside the system.
Quick Start
- Install dockviz. Either:
- Download the latest release.
- Set up an alias to run it from the (5.8 MB) docker image:
# if docker client using local unix socket
alias dockviz="docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock nate/dockviz"
# if docker client using tcp
alias dockviz="docker run -it --rm -e DOCKER_HOST='tcp://127.0.0.1:2375' nate/dockviz"
- Visualize images by running
dockviz images -t
, which has similar output todocker images -t
.
- Image can be visualized as Graphviz, or as a tree or short summary in the terminal. Only Graphviz output has been implemented for containers.
- If you would like to visualize outside the container you will have to install Graphviz first.
apt-get update && apt-get install graphviz
or
brew update && brew install graphviz
Output Examples
Containers
Currently, containers are visualized with labelled lines for links. Containers that aren't running are greyed out.
# show all containers
$ dockviz containers -d | dot -Tpng -o containers.png
# only show running containers
$ dockviz containers -d -r | dot -Tpng -o containers.png
Images
Image info is visualized with lines indicating parent images:
$ dockviz images -d | dot -Tpng -o images.png
$ dockviz images -d -l | dot -Tpng -o images.png
OR
$ dockviz images --dot --only-labelled | dot -Tpng -o images.png
Or as a treemap:
$ dockviz images -d | patchwork -Tpng -o treemap.png
OR
$ dockviz images --dot | patchwork -Tpng -o treemap.png
Or in short form:
$ dockviz images -s
nate/mongodb: latest
redis: latest
ubuntu: 12.04, precise, 12.10, quantal, 13.04, raring
Or as a tree in the terminal:
$ dockviz images -t
ββ511136ea3c5a Virtual Size: 0.0 B
ββf10ebce2c0e1 Virtual Size: 103.7 MB
β ββ82cdea7ab5b5 Virtual Size: 103.9 MB
β ββ5dbd9cb5a02f Virtual Size: 103.9 MB
β ββ74fe38d11401 Virtual Size: 209.6 MB Tags: ubuntu:12.04, ubuntu:precise
ββef519c9ee91a Virtual Size: 100.9 MB
β ββ07302703becc Virtual Size: 101.2 MB
β ββcf8dc907452c Virtual Size: 101.2 MB
β ββa7cf8ae4e998 Virtual Size: 171.3 MB Tags: ubuntu:12.10, ubuntu:quantal
β ββe18d8001204e Virtual Size: 171.3 MB
β β ββd0525208a46c Virtual Size: 171.3 MB
β β ββ59dac4bae93b Virtual Size: 242.5 MB
β β ββ89541b3b35f2 Virtual Size: 511.8 MB
β β ββ7dac4e98548e Virtual Size: 511.8 MB
β β ββ341d0cc3fac8 Virtual Size: 511.8 MB
β β ββ2f96171d2098 Virtual Size: 511.8 MB
β β ββ67b8b7262a67 Virtual Size: 513.7 MB
β β ββ0fe9a2bc50fe Virtual Size: 513.7 MB
β β ββ8c32832f07ba Virtual Size: 513.7 MB
β β ββcc4e1358bc80 Virtual Size: 513.7 MB
β β ββ5c0d04fba9df Virtual Size: 513.7 MB Tags: nate/mongodb:latest
β ββ398d592f2009 Virtual Size: 242.2 MB
β ββ0cd8e7f50270 Virtual Size: 243.6 MB
β ββ594b6f8e6f92 Virtual Size: 243.6 MB
β ββf832a63e87a4 Virtual Size: 243.6 MB Tags: redis:latest
ββ02dae1c13f51 Virtual Size: 98.3 MB
ββe7206bfc66aa Virtual Size: 98.5 MB
ββcb12405ee8fa Virtual Size: 98.5 MB
ββ316b678ddf48 Virtual Size: 169.4 MB Tags: ubuntu:13.04, ubuntu:raring
Only showing labelled images:
$ dockviz images -t -l
ββ511136ea3c5a Virtual Size: 0.0 B
ββf10ebce2c0e1 Virtual Size: 103.7 MB
β ββ74fe38d11401 Virtual Size: 209.6 MB Tags: ubuntu:12.04, ubuntu:precise
ββef519c9ee91a Virtual Size: 100.9 MB
β ββa7cf8ae4e998 Virtual Size: 171.3 MB Tags: ubuntu:12.10, ubuntu:quantal
β ββ5c0d04fba9df Virtual Size: 513.7 MB Tags: nate/mongodb:latest
β ββf832a63e87a4 Virtual Size: 243.6 MB Tags: redis:latest
ββ02dae1c13f51 Virtual Size: 98.3 MB
ββ316b678ddf48 Virtual Size: 169.4 MB Tags: ubuntu:13.04, ubuntu:raring
Showing incremental size rather than cumulative:
$ dockviz images -t -i
ββ511136ea3c5a Virtual Size: 0.0 B
ββf10ebce2c0e1 Virtual Size: 103.7 MB
β ββ82cdea7ab5b5 Virtual Size: 255.5 KB
β ββ5dbd9cb5a02f Virtual Size: 1.9 KB
β ββ74fe38d11401 Virtual Size: 105.7 MB Tags: ubuntu:12.04, ubuntu:precise
ββef519c9ee91a Virtual Size: 100.9 MB
β ββ07302703becc Virtual Size: 251.0 KB
β ββcf8dc907452c Virtual Size: 1.9 KB
β ββa7cf8ae4e998 Virtual Size: 70.1 MB Tags: ubuntu:12.10, ubuntu:quantal
β ββe18d8001204e Virtual Size: 29.4 KB
β β ββd0525208a46c Virtual Size: 71.0 B
β β ββ59dac4bae93b Virtual Size: 71.2 MB
β β ββ89541b3b35f2 Virtual Size: 269.3 MB
β β ββ7dac4e98548e Virtual Size: 0.0 B
β β ββ341d0cc3fac8 Virtual Size: 0.0 B
β β ββ2f96171d2098 Virtual Size: 0.0 B
β β ββ67b8b7262a67 Virtual Size: 1.9 MB
β β ββ0fe9a2bc50fe Virtual Size: 656.0 B
β β ββ8c32832f07ba Virtual Size: 383.0 B
β β ββcc4e1358bc80 Virtual Size: 0.0 B
β β ββ5c0d04fba9df Virtual Size: 0.0 B Tags: nate/mongodb:latest
β ββ398d592f2009 Virtual Size: 70.9 MB
β ββ0cd8e7f50270 Virtual Size: 1.4 MB
β ββ594b6f8e6f92 Virtual Size: 0.0 B
β ββf832a63e87a4 Virtual Size: 0.0 B Tags: redis:latest
ββ02dae1c13f51 Virtual Size: 98.3 MB
ββe7206bfc66aa Virtual Size: 190.0 KB
ββcb12405ee8fa Virtual Size: 1.9 KB
ββ316b678ddf48 Virtual Size: 70.8 MB Tags: ubuntu:13.04, ubuntu:raring
Showing non-human numbers, for precision:
$ dockviz images -t -i -c
ββ511136ea3c5a Size: 0
ββf10ebce2c0e1 Size: 103675325
β ββ82cdea7ab5b5 Size: 255455
β ββ5dbd9cb5a02f Size: 1919
β ββ74fe38d11401 Size: 105667193 Tags: ubuntu:12.04, ubuntu:precise
ββef519c9ee91a Size: 100930679
β ββ07302703becc Size: 250998
β ββcf8dc907452c Size: 1919
β ββa7cf8ae4e998 Size: 70094270 Tags: ubuntu:12.10, ubuntu:quantal
β ββe18d8001204e Size: 29352
β β ββd0525208a46c Size: 71
β β ββ59dac4bae93b Size: 71150930
β β ββ89541b3b35f2 Size: 269335966
β β ββ7dac4e98548e Size: 0
β β ββ341d0cc3fac8 Size: 0
β β ββ2f96171d2098 Size: 0
β β ββ67b8b7262a67 Size: 1866379
β β ββ0fe9a2bc50fe Size: 656
β β ββ8c32832f07ba Size: 383
β β ββcc4e1358bc80 Size: 0
β β ββ5c0d04fba9df Size: 0 Tags: nate/mongodb:latest
β ββ398d592f2009 Size: 70917743
β ββ0cd8e7f50270 Size: 1418392
β ββ594b6f8e6f92 Size: 0
β ββf832a63e87a4 Size: 0 Tags: redis:latest
ββ02dae1c13f51 Size: 98348330
ββe7206bfc66aa Size: 190007
ββcb12405ee8fa Size: 1903
ββ316b678ddf48 Size: 70822908 Tags: ubuntu:13.04, ubuntu:raring
It is also possible to show the image's CreatedBy field, for help identifying image layers when they show up with "" image Ids.
Running
Dockviz supports connecting to the Docker daemon directly. It defaults to unix:///var/run/docker.sock
, but respects the following as well:
-
The
DOCKER_HOST
,DOCKER_CERT_PATH
, andDOCKER_TLS_VERIFY
environment variables, as set up by boot2docker or docker-machine. -
Command line arguments (e.g.
--tlscacert
), like those that Docker itself supports.
Dockviz also supports receiving Docker image or container json data on standard input.
$ curl -s http://localhost:4243/images/json?all=1 | dockviz --stdin images --tree
$ curl -s http://localhost:4243/containers/json?all=1 | dockviz --stdin containers --dot | dot -Tpng -o containers.png
$ echo -e "GET /images/json?all=1 HTTP/1.0\r\n" | nc -U /var/run/docker.sock | sed '1,/^[[:space:]]*$/d' | dockviz --stdin images --tree
$ echo -e "GET /containers/json?all=1 HTTP/1.0\r\n" | nc -U /var/run/docker.sock | sed '1,/^[[:space:]]*$/d' | dockviz --stdin containers --dot | dot -Tpng -o containers.png
$ echo -e "GET /images/json?all=1 HTTP/1.0\r\n" | nc -U /var/run/docker.sock | sed '1,/^[[:space:]]*$/d' | docker run -i nate/dockviz --stdin images --tree
$ echo -e "GET /containers/json?all=1 HTTP/1.0\r\n" | nc -U /var/run/docker.sock | sed '1,/^[[:space:]]*$/d' | docker run -i nate/dockviz --stdin containers --dot | dot -Tpng -o containers.png
Note: GNU netcat doesn't support -U
(UNIX socket) flag, so OpenBSD variant can be used.
Binaries
See the releases area for binaries.
Build
# install graphviz in host environment for rendering (Debian example)
sudo apt-get install git graphviz -y
# pull latest code
mkdir -p $GOPATH/src/github.com/nate/ && cd $GOPATH/src/github.com/nate/
git clone https://github.com/nate/dockviz.git && cd dockviz
# force static compilation for go language
export CGO_ENABLED=0
# fetch vendored dependencies
govendor sync
# build
go build
# build docker image
docker build --no-cache=true -t "nate/dockviz:1.0" -t "nate/dockviz:latest" .
# push to docker hub
docker login --username=mygituser --password=xxxxxxx
docker push nate/dockviz