Today we’re releasing Docker 1.9 – and it’s a big one. Docker Swarm and multi-host networking are production-ready, Docker Engine has a new volume management system, and Docker Compose has much better support for multiple environments. These in combination establish the foundation for scaling your distributed apps in production.
Containerization is changing how you build infrastructure, and you need to use the right tools for the job. Docker Swarm turns your infrastructure into a single pool of resources for running your distributed apps, but all of the containers that are part of those apps need managing somehow. And they all probably need to talk to each other. And some of them probably need to store data somewhere. In a world where a container could be running on any host in your infrastructure, this is a difficult thing to manage.
Needless to say, we’ve got you covered. Docker Networking allows you create virtual networks that span underlying hosts, so your containers can communicate with each wherever they are. The new volume management system in Docker Engine lets you store persistent data wherever those containers land. On top of these fundamentals, you can then use Compose to run the important bit: your application.
Networking was announced as part of the experimental release at DockerCon in June. We’re pleased to announce that Networking is now in the stable release of Docker Engine and ready to use in production.
Networking allows you to create virtual networks in Docker Engine that span multiple hosts. Containers can be attached to these networks wherever they are, giving you complete control over your network topology and what container can talk to what. Not only that, but the system powering networks can be swapped out with a plugin, allowing you to integrate with any networking system you want without having to modify your application.
Read more about this on our Networking blog post. We’ll also be hosting an online meetup dedicated just to Networking, where you can hear from the engineers who built it.
You’ve told us again and again that you’re struggling to store persistent data in your distributed apps. Docker 1.8 included volume plugins, allowing you to back Docker volumes by any third-party storage system.
We’ve now made that even better. Docker Engine 1.9 includes a completely redesigned volume system that makes them much easier to use and brings plugins to the forefront. It even works with Swarm, allowing you to manage persistent storage across your entire cluster.
Here’s how it works with the Flocker plugin:
$ docker volume create -d flocker --name=myvolume $ docker run -v myvolume:/data busybox sh -c "echo hello > /data/file.txt" $ docker run -v myvolume:/data busybox sh -c "cat /data/file.txt"
Docker Swarm is native clustering for Docker Engine. For this release, we’ve buckled down and scale tested, bug squashed, optimized and hardened. In combination with new networking and volumes in this release, we can confidently say that Docker Swarm is ready for your production applications. We’ve been scale testing it to 1,000 nodes and 30,000 containers, and it doesn’t break a sweat.
Docker Engine 1.9
In addition to networking and volume management, the 1.9 release has a bunch of other new features:
• Build-time arguments in Dockerfile: It’s now possible to define arguments in a Dockerfile that can be passed to
docker build to customize how an image is built. For example, you might want to set
HTTP_PROXY, customize what version of a dependency is installed, etc.
• Concurrent image pull: If you pull an image that is already in the process of being pulled, its progress will be displayed and the command will exit correctly. (No more getting stuck on “Layer already being pulled by another client”!)
• Custom stop signals: A
STOPSIGNAL Dockerfile instruction has been added allowing you to customize the signal that gets sent to your application when you do
• AWS CloudWatch logging driver: If you’re on AWS, you can now ship your container logs directly to CloudWatch.
• Disk I/O metrics:
docker stats will now display disk metrics.
Check out the release notes for the full list. Huge thanks to everyone who made this release happen – Madhav Puri for build-time arguments, and Darren Shepard, Patrick Hemmer, and Harald Albers for testing, reviewing and all around helping with the release.
Also, check out the upcoming webinar: Persistent Storage, Data and Docker to learn more about how to use the new volume management. Register today.
Docker Compose 1.5
Docker Compose is a tool for defining and running multi-container applications. Here’s what’s new:
• Windows support: Compose now runs on Windows and is included in Docker Toolbox for Windows. This allows development environments built on Mac run on Windows, and vice versa.
• Environment variables in Compose files: You can now make anything in your Compose file configurable at runtime by using environment variables.
• Better support for multiple environments: You can specify a single base file that describes the structure of your app and override that with files that specify the differences in development, test, and production. See this guide for more information on how to do this.
• Integration with networking: Experimental support for Docker’s new networking is in this release, so when you deploy a Compose app on a Swarm, it’ll work across multiple hosts. Full details are here.
• Compose file validation: Compose will now thoroughly validate your Compose file and output much better error messages when you get something wrong.
To use all of this new stuff in development on Mac or Windows, download Docker Toolbox. It includes all the latest versions of everything above bundled into a single, convenient installer. Give it a try!
It also includes Machine 0.5, a tool for creating Docker Engines on your laptop and on cloud providers. Machine now has pluggable drivers, so if there’s a cloud or virtualization provider you want to run Docker containers on that’s not available today, you can now write your own driver for it. Check out the full release notes here.
To take advantage of all these features, plus a bunch of other bug fixes and more, download Docker Toolbox for Mac and Windows today.
Docker Registry 2.2
Here’s what’s new in the latest release:
• Google Cloud Storage support: You can now store your layers and manifests on Google infrastructure.
• Read-only mode: If you want to maintain availability during unsafe administrative tasks, you can now switch Registry into a read-only mode to stop users from pushing.
• Configurable file-existence and HTTP health checks: Administrators can temporarily disable a registry by placing a file on the filesystem. The registry can be configured to check the health of other services, such as notification endpoints.
• Configurable HTTP response headers: You can now customize the HTTP headers that Registry responds with so you can improve security, customize it for your environment, etc.
Learn More about Docker
• New to Docker? Try our 10 min online tutorial
• Sign up for a free 30 day trial of Docker
• Share images, automate builds, and more with a free Docker Hub account
• Read the Docker 1.9 Release Notes
• Subscribe to Docker Weekly
• Register for upcoming Docker Online Meetups
• Attend upcoming Docker Meetups
• Register for DockerCon Europe 2015
• Start contributing to Docker