Docker 1.9 is out, and it fixes a longtime ailment for Docker users: networking.
Multi-Host Docker Networking, the official name for the new feature, was one of several competing solutions for Docker's clumsy and complicated networking model. Eventually, third-party company SocketPlane was merged into Docker, bringing its networking solution in the vein of the OpenDaylight/Open vSwitch network fabric. It was a smart move, since it meant the solution in question leveraged (if indirectly) work from existing open source networking projects.
Multi-host networking was previously available on an experimental basis. In Docker 1.9, it's generally available, and it can be used with the Swarm and Compose tools. Virtual networks can be created and attached to containers, allowing containers to talk to each other across multiple hosts, and allowing different applications or different portions of applications to be segregated from each other.
The networking subsystem is also pluggable, allowing native support for technologies like VXLAN or IPVLAN. Third-party plug-ins are already available from VMware, Cisco, and Microsoft.
Version 1.9 also introduces a new way to do storage volumes and fixes another long-standing complaint. Docker volumes can now be backed up by any third-party storage system -- EMC, OpenStack Ceph volumes, and so on -- via a volume plug-in system. The volume-driver system is also supported by Swarm, the native Docker clustering system, now in a 1.0 release.
Docker Compose, the tool for defining multicontainer applications, also got a look. Revision 1.5 runs on Windows (allowing for cross-environment development), automatically validates files generated by Compose, and works with the new Docker networking methodology. This last feature, which is currently experimental, means a multicontainer Docker app can run across multiple hosts via orchestration tools like Swarm.
The explosive growth of interest in Docker meant its limitations were exposed more quickly than they would have been in a more modestly adopted solution. Version 1.9 takes on big issues, but there's plenty more to tackle. A big one comes to mind: Support for unprivileged containers via user namespaces. The first phases have landed in 1.9, but work on it was blocked by the introduction of the new networking code. Now that Docker has slightly more aggressive competition from the likes of CoreOS, it's possible someone else may deliver those features first.