NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1482 most downloaded on crates.io
A library for integration-testing against docker containers from within Rust.
Last release 2 months ago
06 Aug 2026
Ships fairly regularly
a new release about every 5 weeks
Most releases are documented
notes for 40 of 50 stable releases
1 version withdrawn
withdrawn after publishing
8 years old
51 releases · first in 2018
Update astral-tokio-tar from 0.6.0 to 0.6.1
Pass Docker Hub credentials for images without a registry prefix
One column per quarter.
Update astral-tokio-tar requirement from 0.5.6 to 0.6.0
Pass env vars via Docker exec API instead of prepending to command
Add User-Agent header 'tc-rust/' to Docker API requests
Add User-Agent header 'tc-rust/' to Docker API requests
Support for reusable containers that have been stopped
Details Features Allow overriding project name
Update russh requirement from 0.54.4 to 0.55.0
Make port_bindings consistent with docker cli when publish_all_ports = true
no_cache, skip_if_exists and buildargs (#856)Platform config passing through ImageExt trait
Replace tokio-tar with astral-tokio-tar
http_wait functionallity without tls dependencies (#850)platform testAdd Send trait to stderr & stdout of ExecResult
Send trait to stderr & stdout of ExecResult (#809)Container*::exit_code (#791)Container*::is_running (#790)Support waiting for commands exit regardless of exit code
pause and unpause container (#785)security_opt and readonly_rootfs to be configured (#787)Proper handling of possible stdin in logs stream
Add examples of ImageExt usage and cover GenericImage
ImageExt usage and cover GenericImage (#747)cap_add and cap_drop support (#726)start_containers_in_parallel (#748)Expose configured bollard client
Support copy files to container
[❗] Docker socket detection on unix
Allow configuring resource ulimits
Don't assume docker host is a url
Trim newline char from the mirrored messages
[❗] Drop Clone impl for ContainerRequest
Clone impl for ContainerRequest (#680)stderr wait strategy (#692)LoggingConsumer based on log crate (#682)LogWaitStrategy to wait for message appearance multiple times (#683)ExitWaitStrategy (#684)[❗] Use rustls-tls as default for reqwest
rustls-tls as default for reqwest (#672)GenericImage::with_exposed_port (#670)ContainerPort to u16 (#664)ports module public (#665)current_thread flavor (#666)[❗] Make DOCKER_CONFIG usage consistent with Docker CLI
DOCKER_CONFIG usage consistent with Docker CLI (#654)From<u16> for ContainerPort with TCP default (#658)u16 to Portsrustfmt (#657)ImageArgs and rename to cmd (#649)ImageExt trait to avoid explicit conversion to RunnableImage (#652)RunnableImage to ContainerRequest (#653)wait strategies (#661)[❗] Drop previously deprecated get_host_ip_address
Error for WaitError (#629)exec interface to return logs and exec code (#631)Sendable (#637)eof for container log streams (#639)stdout and stderr (#640)Vec (#641)get_host for unix and npipe docker hosts
Add get_host to Container and deprecate get_host_ip_address
Correct drop of a network for sync container
Introduce properties-config cargo feature
### Details #### Bug Fixes - Expose mount-related types
### Details #### Documentation - Fix docsrs attributes
docsrs attributesAdd readme to crates.io and fix documentation builds
Use the binds option instead of volumes for mounts
--add-host (#547)RunnableImage (#558)name parameter to RunnableImage (#549)spectral from dev-dependencies (#526)Added privileged parameter to RunnableImage
privileged parameter to RunnableImageshm_size (shared memory size) parameter to RunnableImageContainer::exec changed to be synchronous and return ExecOutputget_bridge_ip_address not to use outdated propertiesDocker trait is declared to be Send + SyncContainer::get_host_port and ContainerState::host_port are now deprecated in favor of the new IPv4- and IPv6-specific methods.
watchdog feature that spawns a background thread keeping track of docker containers that are started by the test suite and removes them in the case of a CTRL+C or kill of the test process.Container::get_host_port_ipv4, Container::get_host_port_ipv6, ContainerState::host_port_ipv4, and ContainerState::host_port_ipv6 to better handle automatically assigned ports.
Docker may bind the same exposed container port to different host ports on 0.0.0.0 and ::, depending on influences from the environment.Container::get_host_port and ContainerState::host_port are now deprecated in favor of the new IPv4- and IPv6-specific methods.Make Docker trait pub(crate). This reduces the API surface of the crate which allows for fewer breaking changes in the future. All functionality from…
testcontainers::clients::Http and provides an async interface.
As of now, this implementation is guarded behind the experimental feature-flag and not yet guaranteed to work flawlessly.podman CLI in addition to dockerTESTCONTAINERS environment variable to control what happens to containers and networks at the end of a test.
The default value is remove which deletes all containers and networks that were used in the test.
By setting the value to keep, containers and networks will not be deleted but kept running.
You will have to stop and delete those yourself eventually.-debug for bitcoind and replace it with
-startupnotify=echo .... More details on bitcoind 0.21.0 can be found here.
Note: This release also removed the default wallet.expose_port functionality to Image trait.Google Cloud SDK imageRabbitMQ imageWaitFor::Healthcheck container ready condition, which corresponds with the healthcheck status.MinIO imagewait_until_ready, images now need to implement ready_conditions which returns a list of WaitFor instances.get_host_port from Option<u16> to u16.
If the port cannot be resolved, this function will now panic.Docker trait pub(crate).
This reduces the API surface of the crate which allows for fewer breaking changes in the future.
All functionality from Docker (start, stop, rm, and ports) is available on a container directly.descriptor is broken down into name and tag within Image trait.MongoDB-image default version to 5.0.6.DYNAMODB_ADDITIONAL_SLEEP_PERIOD variable from dynamodb_local image.
Previously, we had a fallback of 2 seconds if this variable was not defined.
We now wait for 2 seconds unconditionally after the specified message has been found.KEEP_CONTAINERS env variable.
The functionality of KEEP_CONTAINERS=true is superseded by TESTCONTAINERS=keep.with_entrypoint from the Image trait.
This functionality is not used within the library.
Images that need this kind of customization can always implement it on their own type directly but there is no need to force it onto them.Image::EnvVars and Image::Volumes associated types.
The respective functions Image::env_vars and Image::volumes still exist but now return a trait object that must implement Iterator<Item = (&String, &String).
This allows us to provide a default implementation which reduces the boilerplate in defining new images.args and with_args from Image trait.rm -f -v <ID> <ID> is printed on stdout.
<ID> can either be the container name or its ID which is used within testcontainer-rs.Allow custom version for postgres image
derivative dependencyOrientDB imageZookeeper imageRunArgs instead of each Image.Docker::run_with_args method. This allows naming a container and assigning it to a specific docker network. The docker network will be created if it d
Docker::run_with_args method. This allows naming a container and assigning it to a specific docker network. The docker
network will be created if it doesn't exist yet. Once the client is dropped, the network will be removed again if it
has previously been created. A network that already existed will not be removed.coblox/bitcoin-core Image.
We are setting bech32 as a default here.
This is different from the default of bitcoind.Support for the fallbackfee argument for the bitcoin-core image.
fallbackfee argument for the bitcoin-core image.entrypoint used by the image.Provide a default password for the postgres image. There seems to be an unfortunate breaking change in the postgres image that we need to cater for.
Container#get_host_port now only accepts a u16 instead of a u32.
u16 captures all possible port values.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →