Dockercon is over, but it brought a lot of really interesting things that I’m taking a look at today. I can’t cover everything in this short note though, so I recommend that you take a look at the Docker blog for anything else. I’ll also take a brief look at Chef’s new Habitat tool.
1.12
Docker 1.12 is currently available as a release candidate, but is being pushed as the version to install regardless of that status. Considering the number of impressive new features that isn’t really a surprise, but you might want to be careful with your production environments and wait until it’s fully released.
The main feature of 1.12 is orchestration. Over the past 3 years, a number of orchestration tools have been created including Docker Swarm by Docker itself. Now Swarm has become part of Docker itself, enabling anyone to easily orchestrate a swarm (which is what Docker calls a collection of Docker engines). It will do all the usual things such as having manager nodes, loadbalancers, and anything else that might be needed. Having this built-in should make it a lot easier to test your orchestration locally thereby hopefully preventing issues.
It’s not just orchestration however that comes with 1.12, another focus is security. In particular, security within your swarm. Manager nodes (the ones that handle all the scaling etc.) will create TLS certificates and share those with the other nodes. The best part of that however is that these certificates will be automatically rotated as well, with a configuration option for how often1. And all of this happens automated without even the need to set it up.
The last main feature is an experimental one called Distributed Application Bundles. These bundles seem to be an easier way of sharing swarms, or rather their configuration. I haven’t played with this yet though, so I’m not entirely sure how they are different from Docker Compose. Especially as one way of creating them is by using an existing Compose file. I suspect that it will contain more information about the swarm, making it easier to port it to a different environment. It is still experimental though, so I don’t think it will be ready for production use until at least 1.13 comes out.
Docker betas
A couple of the more interesting items have to do with beta releases. First, the native Mac/Windows versions of Docker are now available as a public beta. And not just that, they seem to be the Docker recommended way to run it on those platforms despite being a beta. If you go to the “Get Docker” section of the site it will lead you to these. Having used the Mac version for a while now, I can only say that to me it seems like a much improved experience over the old one.
Next up is a marketplace called the Docker Store. This will enable you to buy and sell vetted/verified Docker images. Unlike Docker Hub the idea here is that you will be able to use it as a way to get free or paid containers that you can be reasonably sure are trustworthy2. While the verification is nice, it’s probably the ability to have access to paid software that is most interesting as that’s not usually possible right now. I’m not in this beta so I can’t say for sure, but it seems very similar to the AWS Marketplace for AMIs.
Speaking of AWS, it is a new pair of betas that really strikes my interest: AWS and Azure integration. Using the now native swarm capabilities of Docker 1.12, this integration will allow you to very easily create a swarm of your desired size in AWS or Azure. Unfortunately my beta application hasn’t been approved yet, so I have no direct experience with it3. As I’m more familiar with AWS, I’ll explain how it works using that example.
After you get approved for the beta, your AWS account will get access to several AMIs created by Docker that have all the requirements installed. You can then use the provided CloudFormation template to start a new swarm. All you have to do is say how many manager nodes and regular nodes you want and it all happens for you. You will get an endpoint to SSH into one of the manager nodes and you can do the rest from there. It sounds really easy, and a good way of setting up your swarm. AWS already has ECS which does something similar, but the advantage of using this seems to be that you don’t need to do anything different from your development environment. You can just use the same setup as you do locally and port it to your cloud provider.
Docker for Cloud Datacenters
Docker Datacenter, introduced earlier this year, is a way of running a private datacenter using Docker containers. Up until now it could be a bit of work to set this up, regardless of whether you used your own hardware or cloud services. Now this has changed with both AWS and Azure offering quick starts for setting it up. If you’ve been wanting to try this, now is the time. The linked post also contains a 30 day free trial for either service.
Habitat
I mentioned last week that Chef released a new tool, and it matches quite nicely with the news related to Docker. Habitat is a way of packaging your application to make it independent of the environment it will run on, from bare metal to Docker containers.
Basically, how it works is that you can package up your application into an environment that will allow it to self-configure. That is, it will adapt itself to what it’s running on without the need for the developer to do so. That means you don’t need to adapt your application for the production environment and makes it easy to move to a different type of environment. I admit that I’m a bit skeptical of how this will work, or how this is more beneficial than running something in containers. If it works as advertised it will no doubt be very useful for things like moving legacy applications to the cloud, but I’ll give it some time to mature before I try it myself.
-
The minimum time you can set is 30 minutes ↩︎
-
When you don’t know what went into a container it’s always hard to be sure it’s safe for private data. ↩︎
-
It’s almost as if it was announced at a place with thousands of developers who all wanted in on those betas, thereby pushing my application to the back of a long queue. ↩︎