Docker Swarm Visualizer

使用 Docker Remote API、Node.JS 和 D3 的 Docker Swarm 模式可视化器。「A visualizer for Docker Swarm Mode using the Docker Remote API, Node.JS, and D3」

Github星跟踪图

Sample image of  nodes with data

Docker Swarm Visualizer

*** note ***
This only works with Docker Swarm Mode in Docker Engine 1.12.0 and later. It does not work with the separate Docker Swarm project

Also this is a sample app meant for learning Docker. Running this app in production is insecure and should be avoided. If you want to run it in production you must take all security precautions, and in particular Protect the Docker daemon socket with SSL.

This project was originally created by Francisco Miranda for the 2015 DockerCon EU keynote. It was adapted to be used for the 2016 DockerCon US keynote showcasing Docker swarm mode. Since then the community has generously contributed many updates. Thanks to all the contributors, and a special thanks to @DovAmir and @alexellis for their big contributions.

Demo container that displays Docker services running on a Docker Swarm in a diagram.

This works only with Docker swarm mode which was introduced in Docker 1.12. These instructions presume you are running on the master node and you already have a Swarm running.

Each node in the swarm will show all tasks running on it. When a service goes down it'll be removed. When a node goes down it won't, instead the circle at the top will turn red to indicate it went down. Tasks will be removed.
Occasionally the Remote API will return incomplete data, for instance the node can be missing a name. The next time info for that node is pulled, the name will update.

To run:

$ docker run -it -d -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer

If port 8080 is already in use on your host, you can specify e.g. -p [YOURPORT]:8080 instead. Example:

$ docker run -it -d -p 5000:8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer

To run with a different context root (useful when running behind an external load balancer):

$ docker run -it -d -e CTX_ROOT=/visualizer -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer

To run in a docker swarm:

$ docker service create \
  --name=viz \
  --publish=8080:8080/tcp \
  --constraint=node.role==manager \
  --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
  dockersamples/visualizer

Supported architectures

The main dockersamples/visualizer image supports linux/amd64.

For armhf, there is a pre-built image available. See Running on ARM.

For Windows, there is a separate Dockerfile.windows and image. See Running on Windows.

Missing your architecture? See Building a custom image.

Running on ARM

@alexellisuk has pushed an image to the Docker Hub as alexellis2/visualizer-arm:latest it will run the code on an ARMv6 or ARMv7 device such as the Raspberry Pi.

$ docker service create \
  --name=viz \
  --publish=8080:8080/tcp \
  --constraint=node.role==manager \
  --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
  alexellis2/visualizer-arm:latest
  • Update/rebuild the image:

If you would like to build the image from source run the following command:

$ docker build -t visualizer-arm:latest .

Make sure you do this on a Raspberry Pi directly.

View on Docker Hub

Running on Windows

@StefanScherer has pushed an image to the
Docker Hub as stefanscherer/visualizer-windows:latest it will run the code
in a Windows nanoserver container.

If you would like to build the image from source run the following command:

$ docker build -f Dockerfile.windows -t visualizer-windows:latest .

On Windows you cannot use -v to bind mount the named pipe into the container.
Your Docker engine has to listen to a TCP port, eg. 2375 and you have to
set the DOCKER_HOST environment variable running the container.

$ip=(Get-NetIPAddress -AddressFamily IPv4 `
   | Where-Object -FilterScript { $_.InterfaceAlias -Eq "vEthernet (HNS Internal NIC)" } `
   ).IPAddress

docker run -d -p 8080:8080 -e DOCKER_HOST=${ip}:2375 --name=visualizer stefanscherer/visualizer-windows

Connect to a TLS secured Docker engine

To work with a TLS secured Docker engine on Windows, set the environment variable DOCKER_TLS_VERIFY and
bind mount the TLS certificates into the container.

$ip=(Get-NetIPAddress -AddressFamily IPv4 `
   | Where-Object -FilterScript { $_.InterfaceAlias -Eq "vEthernet (HNS Internal NIC)" } `
   ).IPAddress

docker run -d -p 8080:8080 -e DOCKER_HOST=${ip}:2376 -e DOCKER_TLS_VERIFY=1 -v "$env:USERPROFILE\.docker:C:\Users\ContainerAdministrator\.docker" --name=visualizer stefanscherer/visualizer-windows

Building a custom image

When building for Windows, see Running on Windows.

To build an up-to-date image for any architecture supported by node:8-alpine (currently amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le and s390x), execute the following command on a device of your target architecture:

$ docker build -t visualizer-custom:latest .

Afterwards you can start visualizer by using any of the commands stated above. Just replace dockersamples/visualizer with visualizer-custom. For example:

$ docker run -it -d -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock visualizer-custom

TODO:

  • Take out or fix how dist works
  • Comment much more extensively
  • Create tests and make them work better
  • Make CSS more elastic. Currently optimized for 3 nodes on a big screen

主要指标

概览
名称与所有者dockersamples/docker-swarm-visualizer
主编程语言JavaScript
编程语言JavaScript (语言数: 4)
平台
许可证Apache License 2.0
所有者活动
创建于2016-06-22 20:40:20
推送于2024-10-26 07:12:05
最后一次提交2024-10-26 12:42:04
发布数0
用户参与
星数3.3k
关注者数101
派生数590
提交数244
已启用问题?
问题数65
打开的问题数8
拉请求数76
打开的拉请求数3
关闭的拉请求数15
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?