154 lines
4.4 KiB
Markdown
154 lines
4.4 KiB
Markdown
# **Dozzle Deployment Modes**
|
||
|
||
Dozzle offers multiple deployment modes to support a variety of architectures—from single-host setups to distributed multi-node clusters. Depending on your environment, you can run Dozzle in one of the following modes:
|
||
|
||
* **Standard Mode (default)** – Local logs from the Docker engine
|
||
* **Agent Mode** – Remote hosts exposed securely via TLS
|
||
* **Swarm Mode** – Distributed mesh network for Docker Swarm clusters
|
||
* **Hybrid (Swarm + Standalone Agents)** – Combine both for maximum flexibility
|
||
|
||
This section explains how each mode works and provides production-ready deployment examples.
|
||
|
||
---
|
||
|
||
# **1. Agent Mode**
|
||
|
||
Agent mode allows a Dozzle instance to expose its host’s container logs to other Dozzle servers over a secure **TLS-encrypted channel**. This is ideal for:
|
||
|
||
* Managing multiple remote Docker hosts
|
||
* Viewing logs from distributed machines in a single Dozzle UI
|
||
* Secure cross-host communication without VPNs
|
||
|
||
In agent mode, Dozzle runs with the `agent` subcommand and listens for remote connections.
|
||
|
||
---
|
||
|
||
## **Deploying a Dozzle Agent**
|
||
|
||
```yaml
|
||
services:
|
||
dozzle-agent:
|
||
image: amir20/dozzle:latest
|
||
command: agent
|
||
volumes:
|
||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||
ports:
|
||
- 7007:7007
|
||
```
|
||
|
||
### **Customizing Agent Identity**
|
||
|
||
Agents can be assigned human-readable names using the `DOZZLE_HOSTNAME` variable:
|
||
|
||
```yaml
|
||
environment:
|
||
- DOZZLE_HOSTNAME=my-special-name
|
||
```
|
||
|
||
---
|
||
|
||
## **Connecting a Dozzle Instance to One or More Agents**
|
||
|
||
Define the remote agents in the `DOZZLE_REMOTE_AGENT` variable. Multiple agents should be comma-separated.
|
||
|
||
```yaml
|
||
services:
|
||
dozzle:
|
||
image: amir20/dozzle:latest
|
||
environment:
|
||
- DOZZLE_REMOTE_AGENT=agent1:7007,agent2:7007
|
||
ports:
|
||
- 8080:8080
|
||
```
|
||
|
||
Once launched, the UI will display the remote agent hosts alongside local containers.
|
||
|
||
---
|
||
|
||
# **2. Swarm Mode**
|
||
|
||
Dozzle supports a special **Swarm Mode** designed for distributed Docker Swarm environments. When enabled, Dozzle automatically forms a **secure, fully encrypted mTLS mesh network** between all Dozzle nodes in the cluster.
|
||
|
||
### **Key features of Swarm Mode**
|
||
|
||
* Automatic discovery of all Dozzle instances
|
||
* Encrypted communication using mTLS
|
||
* Support for grouping logs by:
|
||
|
||
* Docker stacks (`com.docker.stack.namespace`)
|
||
* Docker Compose projects (`com.docker.compose.project`)
|
||
* Swarm services (`com.docker.swarm.service.name`)
|
||
|
||
Swarm Mode is the recommended deployment method for multi-node clusters.
|
||
|
||
---
|
||
|
||
## **Deploying Dozzle in Swarm Mode**
|
||
|
||
Use `mode: global` to deploy Dozzle on every node:
|
||
|
||
```yaml
|
||
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
|
||
```
|
||
|
||
### **Important:**
|
||
|
||
**Swarm mode cannot use Docker socket-proxy.**
|
||
This is a Docker limitation—Swarm services cannot directly access individual proxy instances, and Dozzle requires that direct access.
|
||
|
||
---
|
||
|
||
# **3. Adding Standalone Agents to Swarm Mode (v8.8.x+)**
|
||
|
||
Starting with **v8.8.x**, Dozzle allows you to mix **standalone agents** with a **Swarm-mode deployment**. Remote agents will appear as additional nodes in the Dozzle UI.
|
||
|
||
Example configuration:
|
||
|
||
```yaml
|
||
services:
|
||
dozzle:
|
||
image: amir20/dozzle:latest
|
||
environment:
|
||
- DOZZLE_MODE=swarm
|
||
- DOZZLE_REMOTE_AGENT=agent:7007
|
||
volumes:
|
||
- /var/run/docker.sock:/var/run/docker.sock
|
||
ports:
|
||
- 8080:8080
|
||
networks:
|
||
- dozzle
|
||
deploy:
|
||
mode: global
|
||
networks:
|
||
dozzle:
|
||
driver: overlay
|
||
```
|
||
|
||
This hybrid approach is ideal when part of your infrastructure runs in Swarm and other nodes run standalone Docker.
|
||
|
||
---
|
||
|
||
# **Summary**
|
||
|
||
| Mode | Best For | Key Features |
|
||
| --------------------------- | -------------------------------- | ------------------------------------ |
|
||
| **Standard** | Single-host setups | Local logs, simplest deployment |
|
||
| **Agent Mode** | Remote nodes, non-Swarm clusters | TLS-secured remote access |
|
||
| **Swarm Mode** | Multi-node Swarm clusters | mTLS mesh networking, auto-discovery |
|
||
| **Hybrid (Swarm + Agents)** | Mixed environments | Combine Swarm nodes + remote agents |
|