17.07.0

Latest release in branch 17.07
Released 8 years ago (August 29, 2017)

Software Docker Engine
Branch 17.07
Status
End of life
End of life August 31, 2017
First official release version 17.07.0
First official release date 8 years ago (August 29, 2017)
Release notes https://docs.docker.com/engine/release-notes/17.07/
Documentation https://docs.docker.com/
Download https://docs.docker.com/engine/install/
Docker Engine 17.07 Releases View full list

What Is New in Docker Engine 17.07

Docker Engine 17.07.0-ce is the first release to come from the new Moby Project, splitting the daemon into more modular components. This version introduces significant updates to both the builder and runtime, along with a host of client and daemon improvements.

Category Key Changes
New Features BuildKit tech preview, multi-stage build --target flag, docker system commands, service logs.
Runtime & Orchestration Service logs, node generic resources, --health-* flags for docker run.
Builder Multi-stage build enhancements, BuildKit backend (experimental).
Client & Daemon docker system prune, df, info; context support; improved layer push/pull.
Deprecation Version 1.13 of the Docker API is deprecated.
Bug Fixes & Misc Numerous fixes for networking, storage, and container lifecycle.

What are the major builder improvements in 17.07?

The headline feature is the experimental integration of BuildKit as a new backend for the Docker builder. This is a ground-up rewrite designed for better performance, storage management, and extensibility. You can enable it by setting the environment variable DOCKER_BUILDKIT=1.

Multi-stage builds also got a powerful new --target flag for the docker build command. This allows you to stop the build at a specific stage defined in your Dockerfile, which is incredibly useful for debugging intermediate build stages without running the entire process.

How did Docker Swarm services get better?

Service management sees a major quality-of-life improvement with the introduction of the docker service logs command. This finally lets you fetch the logs of any service directly, streamlining the debugging process for Swarm workloads without having to find the specific container ID on a specific node.

For advanced cluster scheduling, Swarm now supports node generic resources. You can advertise resources on your nodes (e.g., --generic-resource gpu=2) and then specify them in your service definitions, allowing you to schedule services that require specialized hardware.

What new client commands should I start using?

The docker system subcommand is a new Swiss Army knife for managing disk space and viewing system information. docker system df shows docker disk usage, while docker system prune cleans up unused images, containers, networks, and volumes in one go. It's a much-needed consolidation of cleanup operations.

Healthchecks became more flexible with the addition of --health-start-period, --health-interval, and other flags to docker run. This gives you runtime control over health check behavior for individual containers, matching the options previously only available in Dockerfiles.

Were there any under-the-hood changes for developers?

Absolutely. This is the first release built from the Moby Project, which refactored the Docker daemon into a collection of more modular, reusable components. In practice, this doesn't change how you use Docker day-to-day, but it signifies a major architectural shift for future development and customization.

The API saw updates too, with version 1.13 being officially deprecated. The push and pull performance for layers was also improved, making image operations feel snappier, especially for large images.

FAQ

How do I enable the new BuildKit builder?
Set the environment variable DOCKER_BUILDKIT=1 before running your docker build command. Remember, this is an experimental feature in 17.07, so expect some rough edges.

Can I now get logs for a Swarm service without finding the container?
Yes, that's exactly what the new docker service logs [SERVICE_NAME] command does. It aggregates the logs from all tasks (containers) belonging to that service.

What does the --target flag do in a build?
It allows you to specify which build stage to stop at in a multi-stage Dockerfile. For example, docker build --target=buildstage will build only up to the stage named buildstage and not run the final copy commands.

What is the purpose of docker system prune?
It's a convenience command that cleans up all unused Docker data—stopped containers, dangling images, unused networks, and build cache—with a single command. Use it to quickly reclaim disk space.

Is the Moby Project split going to break my existing setup?
No. For an end-user, Docker Engine 17.07 works exactly as before. The change is primarily in how the open-source components are organized and packaged, paving the way for more innovation down the line.

Releases In Branch 17.07

Version Release date
17.07.0 8 years ago
(August 29, 2017)