A terminal-based Docker container monitoring tool built with Rust. This is a complete rewrite of amir20/dtop in Rust.
Status: Currently in active development. The project is working toward feature parity with the original dtop. Some features may be incomplete or missing.
Monitor CPU and memory usage of your Docker containers in real-time with a beautiful TUI interface.
- Real-time monitoring of Docker container metrics (CPU, Memory)
- Terminal User Interface (TUI) with keyboard navigation
- Support for local Docker daemon
- SSH support for remote Docker hosts
- Lightweight and fast
- Cross-platform (Linux, macOS, Windows)
Download the latest release for your platform from the Releases page:
- Linux x86_64 (Intel/AMD)
- Linux ARM64 (Raspberry Pi, ARM servers)
- macOS x86_64 (Intel Macs)
- macOS ARM64 (Apple Silicon M1/M2/M3)
# Extract the archive
tar xzf docker-monitor-<platform>.tar.gz
# Make it executable
chmod +x docker-monitor
# Move to your PATH (optional)
sudo mv docker-monitor /usr/local/bin/Requires Rust 1.70 or later.
git clone https://github.com/yourusername/docker-monitor.git
cd docker-monitor
cargo build --releaseThe binary will be available at target/release/docker-monitor.
docker-monitoror explicitly:
docker-monitor --host local# Default SSH port (22)
docker-monitor --host ssh://user@remote-host
# Custom SSH port
docker-monitor --host ssh://user@remote-host:2222# Connect to Docker daemon via TCP (port 2375 is typical for unencrypted)
docker-monitor --host tcp://192.168.1.100:2375
# Note: TCP connections are unencrypted. Only use on trusted networks.docker-monitor --host local --host ssh://user@host1 --host tcp://192.168.1.100:2375Docker Monitor supports YAML configuration files for persistent settings. Config files are searched in the following order (first found wins):
./config.yamlor./config.yml(relative to current directory)~/.config/dtui/config.yamlor~/.config/dtui/config.yml~/dtui.yamlor~/dtui.yml
Example config.yaml:
hosts:
- host: local
- host: ssh://user@server1
- host: tcp://192.168.1.100:2375
- host: ssh://root@146.190.3.114
dozzle: https://l.dozzle.dev/Each host entry supports the following fields:
host: Docker connection string (required)dozzle: URL to Dozzle instance for this host (optional, for future features)- More fields can be added in the future
Note: Command line arguments take precedence over config file values.
See config.example.yaml for a complete example.
- Docker daemon running locally or accessible via SSH
- For SSH connections: SSH access to the remote host with Docker permissions
Built with modern Rust async runtime and libraries:
- Tokio - Async runtime
- Ratatui - Terminal UI framework
- Bollard - Docker API client with SSH support
- Crossterm - Cross-platform terminal manipulation
- Clap - Command-line argument parsing
cargo run# Local Docker
cargo run -- --host local
# Remote Docker via SSH
cargo run -- --host ssh://user@hostcargo build --releaseThis project uses GitHub Actions for continuous integration and deployment:
- Pull Requests: Automatic builds for all platforms with artifacts attached to PR comments
- Releases: Tag-based releases that automatically build and publish binaries for all platforms
This will trigger the release workflow and create a GitHub release with binaries for all supported platforms.
MIT License or Apache 2.0 (your choice)
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Ensure Docker is running and your user has permissions to access the Docker socket:
# Linux: Add your user to the docker group
sudo usermod -aG docker $USER
# Log out and back in for changes to take effectEnsure:
- SSH access is configured correctly
- Your SSH key is loaded (
ssh-add) - The remote user has Docker permissions
- The Docker daemon is running on the remote host
- Container logs viewer
- Container start/stop controls
- Network and disk I/O metrics
- Historical data graphs
- Support for Docker Compose projects
- Configuration file support
- Custom refresh intervals
Built with excellent open-source libraries from the Rust ecosystem.