An asynchronous Rust client library for the Docker and Podman daemon APIs.
Bollard is an asynchronous Rust client library that provides programmatic access to Docker and Podman container runtime APIs. It enables developers to build Rust applications that can manage containers, images, volumes, networks, and other Docker engine resources through a type-safe, modern interface. The library solves the problem of interacting with container daemons from Rust code without relying on CLI tools or external binaries.
Rust developers building container management tools, CI/CD pipelines, container orchestration systems, or any application that needs to programmatically control Docker or Podman instances.
Developers choose Bollard because it offers a fully-featured, type-safe Rust interface to Docker/Podman APIs with excellent async support, comprehensive feature coverage, and flexibility through modular feature flags. Unlike simpler wrappers, it provides generated serialization types from official Docker API specifications and supports advanced features like BuildKit and WebSocket connections.
Docker daemon API in Rust
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Built on Tokio and Hyper, it leverages Rust's async/await for non-blocking operations, ideal for high-concurrency applications interacting with container runtimes.
Provides first-class support for both runtimes with automatic socket discovery for rootless Podman, simplifying deployment across different container ecosystems.
Supports multiple transports including Unix sockets, Windows named pipes, HTTP, SSH, and WebSockets, enabling connections in diverse environments.
Uses generated serialization types from official Docker API specifications, ensuring comprehensive coverage and compile-time safety for all Docker engine resources.
The library relies on numerous feature flags for TLS providers, datetime libraries, and transports, which can confuse users and complicate dependency management.
Serialization types are generated from Docker's API specs, so updates to Docker can introduce breaking changes, requiring frequent library updates and code adjustments.
Enabling features like BuildKit or WebSockets requires specific feature combinations and additional dependencies, increasing initial configuration effort and potential for errors.