If you're a Mac or Windows user, the best way to install Compose and keep it up-to-date is Docker for Mac and Windows.
Docker for Mac and Windows will automatically install the latest version of Docker Engine for you.
Alternatively, you can use the usual commands to install or upgrade Compose:
curl -L https://github.com/docker/compose/releases/download/1.16.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
See the install docs for more install options and instructions.
| Compose file format | Docker Engine |
|---|---|
| 3.3 | 17.06.0+ |
| 3.0 – 3.2 | 1.13.0+ |
| 2.3 | 17.06.0+ |
| 2.2 | 1.13.0+ |
| 2.1 | 1.12.0+ |
| 2.0 | 1.10.0+ |
| 1.0 | 1.9.1+ |
Introduced version 2.3 of the docker-compose.yml specification.
This version requires to be used with Docker Engine 17.06.0 or above.
Added support for the target parameter in network configurations
Added support for the start_period parameter in healthcheck
configurations
Added support for the blkio_config parameter in service definitions
Added support for setting a custom name in volume definitions using
the name parameter (not available for version 2.0)
--no-ansi to suppress ANSI control characters in
outputFixed a bug where nested extends instructions weren't resolved
properly, causing "file not found" errors
Fixed several issues with .dockerignore parsing
Fixed issues where logs of TTY-enabled services were being printed
incorrectly and causing MemoryError exceptions
Fixed a bug where printing application logs would sometimes be interrupted
by a UnicodeEncodeError exception on Python 3
The $ character in the output of docker-compose config is now
properly escaped
Fixed a bug where running docker-compose top would sometimes fail
with an uncaught exception
Fixed a bug where docker-compose pull with the --parallel flag
would return a 0 exit code when failing
Fixed an issue where keys in deploy.resources were not being validated
Fixed an issue where the logging options in the output of
docker-compose config would be set to null, an invalid value
Fixed the output of the docker-compose images command when an image
would come from a private repository using an explicit port number
Fixed the output of docker-compose config when a port definition used
0 as the value for the published port
Thanks to @cecton, @albers, @lawliet89, @AlexeyRokhin, @NikitaVlaznev, @kirinrastogi, @jbarciauskas, @edsrzf and @carlwgeorge for contributing to this release!
Fetched March 31, 2026