docker-wrapper
A comprehensive, type-safe Docker CLI wrapper for Rust applications.
Features
- Comprehensive Docker CLI coverage (80+ commands implemented)
- Type-safe builder pattern API
- Async/await support with Tokio
- Real-time output streaming
- Docker Compose support (optional)
- Pre-configured container templates (Redis, PostgreSQL, MySQL, MongoDB, Nginx)
- Docker context management for remote Docker hosts
- Docker builder commands for build cache management
- Network and volume management
- Zero unsafe code
- Extensive test coverage (750+ tests)
Installation
Add to your Cargo.toml
:
[]
= "0.5"
= { = "1", = ["full"] }
Minimum Supported Rust Version (MSRV): 1.78.0
Enable Docker Compose support:
[]
= { = "0.5", = ["compose"] }
Quick Start
use ;
async
Docker Builder Example
use ;
async
Container Templates
Enable templates for pre-configured containers with sensible defaults:
[]
= { = "0.5", = ["templates"] }
Available templates:
use ;
async
Docker Context Management
use ;
async
.database("myapp")
.user("appuser")
.password("apppass")
.with_persistence("postgres-data");
let postgres_id = postgres.start().await?;
Ok(())
}
Available templates:
- `RedisTemplate` - Redis key-value store
- `RedisSentinelTemplate` - Redis Sentinel for high availability
- `RedisEnterpriseTemplate` - Redis Enterprise with cluster initialization
- `RedisInsightTemplate` - Redis management UI
- `PostgresTemplate` - PostgreSQL database
- `MysqlTemplate` - MySQL database
- `MongodbTemplate` - MongoDB document database
- `NginxTemplate` - Nginx web server
Enable with granular feature flags:
```toml
[dependencies]
docker-wrapper = { version = "0.4", features = ["template-redis", "template-postgres"] }
# Or enable all templates:
docker-wrapper = { version = "0.4", features = ["templates"] }
When to Use docker-wrapper
docker-wrapper is ideal for:
- CLI tools and automation scripts - Familiar Docker CLI behavior
- Docker Compose workflows - Native compose command support
- Development tools - Container management for dev environments
- Shell script migration - Type-safe Rust alternative to bash scripts
- Cross-platform support - Works with Docker, Podman, Colima, etc.
Choosing between Docker Rust libraries? See our comprehensive Comparison Guide comparing docker-wrapper vs bollard vs testcontainers-rs.
Documentation
For comprehensive documentation, examples, and API reference:
- API Documentation - Complete API reference with examples
- Examples - Working examples for common use cases
- Testing Guide - Best practices for testing with docker-wrapper
- Comparison Guide - docker-wrapper vs other Docker Rust libraries
- Command Coverage - Docker CLI command implementation status
- GitHub Repository - Source code and issue tracking
Examples
The examples/
directory contains practical examples:
basic_usage.rs
- Common Docker operationsbasic_docker_patterns.rs
- Essential Docker patterns and best practicesexec_examples.rs
- Container command executionlifecycle_commands.rs
- Container lifecycle managementrun_examples.rs
- Advanced run command usagestreaming.rs
- Real-time output streamingdocker_compose.rs
- Docker Compose usage (requirescompose
feature)debugging_features.rs
- Debugging and inspection featuressystem_cleanup.rs
- System maintenance and cleanupcomplete_run_coverage.rs
- Comprehensive run command optionstemplate_usage.rs
- Container templates usage (requirestemplates
feature)network_volume_management.rs
- Network and volume managementredis_cluster.rs
- Redis cluster setup exampletest_sentinel.rs
- Redis Sentinel high availability exampleredis_enterprise.rs
- Redis Enterprise cluster with initializationtesting_basics.rs
- Basic testing patterns with docker-wrappertest_fixtures.rs
- Reusable test fixtures for common services
Run examples:
Contributing
Contributions are welcome! Please see our Contributing Guide for details.
License
Licensed under the MIT license (LICENSE or http://opensource.org/licenses/MIT).