Getting Started
Dozzle supports multiple ways to run the application. You can run it using Docker CLI, Docker Compose, Swarm, or Kubernetes. The following sections will guide you through the process of setting up Dozzle.
TIP
If Docker Hub is blocked in your network, you can use the GitHub Container Registry to pull the image. Use ghcr.io/amir20/dozzle:latest
instead of amir20/dozzle:latest
.
Standalone Docker
The easiest way to set up Dozzle is to use the CLI and mount docker.sock
file. This file is usually located at /var/run/docker.sock
and can be mounted with the --volume
flag. You also need to expose the port to view Dozzle. By default, Dozzle listens on port 8080, but you can change the external port using -p
. You can also run using compose or as a service in Swarm.
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 amir20/dozzle:latest
# Run with docker compose up -d
services:
dozzle:
image: amir20/dozzle:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 8080:8080
Dozzle also supports connecting to remote agents to monitor multiple Docker hosts. See agent to learn more.
Docker Swarm
Dozzle supports running in Swarm mode by deploying it on every node. To run Dozzle in Swarm mode, you can use the following configuration:
# Run with docker stack deploy -c dozzle-stack.yml <name>
services:
dozzle:
image: amir20/dozzle:latest
environment:
- DOZZLE_MODE=swarm
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 8080:8080
networks:
- dozzle
deploy:
mode: global
networks:
dozzle:
driver: overlay
Then you can deploy the stack using the following command:
docker stack deploy -c dozzle-stack.yml <name>
See swarm mode for more information.
K8s New
Dozzle supports running in Kubernetes. It only needs to be deployed on one node within the cluster.
# rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: pod-viewer
---
# clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: pod-viewer-role
rules:
- apiGroups: [""]
resources: ["pods", "pods/log", "nodes"]
verbs: ["get", "list", "watch"]
- apiGroups: ["metrics.k8s.io"]
resources: ["pods"]
verbs: ["get", "list"]
---
# clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: pod-viewer-binding
subjects:
- kind: ServiceAccount
name: pod-viewer
namespace: default
roleRef:
kind: ClusterRole
name: pod-viewer-role
apiGroup: rbac.authorization.k8s.io
---
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: dozzle
spec:
replicas: 1
selector:
matchLabels:
app: dozzle
template:
metadata:
labels:
app: dozzle
spec:
serviceAccountName: pod-viewer
containers:
- name: dozzle
image: amir20/dozzle:latest
ports:
- containerPort: 8080
env:
- name: DOZZLE_MODE
value: "k8s"
Then apply the configuration using the following command:
kubectl apply -f k8s-dozzle.yml
See Kubernetes mode for more information.