How Docker on Microsoft Azure Helps Developers Get More Into DevOps
When Microsoft first announced support for Docker on Azure, it looked like just another container to add to the list alongside its support for container management tools like Docker libswarm and Kubernetes instead of using comand line tools, while we waited for native support of the Docker engine in the next version of Windows Server. But although Azure is built on Windows Server, it’s also where Microsoft increasingly prototypes new server features that are well suited to the cloud. For example, Azure CTO Mark Russinovich says that Azure is a “key driver, working closely with the Windows team on requirements [for Docker] in the next version of Windows Server, because Azure will be the primary customer.”
That’s why over the last six months Azure has gone from letting you spin up Docker virtual machines to adding more and more support for the management platform. And it’s the management that makes Docker so interesting for devops, and the often-neglected developer side of devops.
The latest development on Azure is putting the Docker engine in the Azure Marketplace, ready to go in an Ubuntu image. Before this you had to create and run your Linux VM and then install the Docker Azure extension in the running VM – and you can still do that if you want to work with a different Linux like CoreOS. That takes advantage of the agent that’s built into all VMs running on Azure, which you can use to inject management agents like Chef and Puppet or anti-malware software. The agent makes Azure’s IaaS offering a little bit more like PaaS, but it’s still a manual step to inject the agents you want into VMs.
But if you’re happy with Ubuntu, this is faster and simpler; you choose Docker on Ubuntu Server from the gallery of VMs, click Create and fill in either a password or an SSH key. (And with Microsoft calling this only the first of many Docker integrations that will be in the Azure Gallery – which is adding more and more open source content – other Linux integrations seem likely to follow.)
“It’s a further simplification of being able to launch and manage the Docker host in Azure,” Corey Sanders of the Azure team told us. “Now you can go into the Marketplace and launch an Ubuntu image with the Docker engine pre-installed so you can launch and manage Docker with just a few clicks. The idea is how do we get it so you can very simply and quickly get to that Docker environment that you want to launch and deploy.”
That’s ideal for both devs and devops deployment practices, he observes. “The most common use case that we’re seeing is the way it’s just few clicks – or if you automate it, a single click — to go from your developer environment to your test environment to your production environment with only a few changes.
From a developer point of view, you can move whatever app solution you’ve written with ease across lots of environments without having to care about them. Whether you’re thinking about multiple cloud providers or your desktop, it can deploy anywhere. Previously you had a lot more that you had to deal with as you moved between environments.”
If you’re deploying inside an enterprise or creating a hybrid deployment, you might be looking at Docker Hub Enterprise which hosts private Docker images; you can also put that on Azure Storage in a blob, using the Docker Azure storage driver.
And if you’re waiting for the planned Docker Orchestration APIs they’ll be coming to Azure; MS Open Technology, the subsidiary that creates open source implementations of technologies that Microsoft is interested in, has already contributed code for the alpha release of the Docker Machine service https://github.com/bfirsh/docker/pull/1. When the Docker orchestration APIs are defined, you’ll be able to use them with Azure, through the Azure Management portal. That — and the native Windows Server Docker engine — is when Azure will really pull all the pieces of Docker together.
Cloud Services Put the Developer in DevOps
A cloud service like Azure is a good match for Docker because the appeal of Docker for developers is the portability (as well as the ability to build on what other people have already build thanks to the stacked virtualisation model that lets you compose multiple layers of virtual file systems to get the combination you need by referencing base images rather than duplicating them), both of which give you faster development cycles.
Docker Vice President of Marketing Dave Messina suggests that Docker created “a separation of application and infrastructure constraints – you get integration of distributed applications and the infrastructure folks can focus on infrastructure management. We have customers who are used to take months to get code changes into productions being able to get a change into production in a matter of weeks – or faster.”
That’s giving developers more of the benefits of devops. “Even though the word is devops, most of the emphasis has been on the ops side,” he notes. “What has made Docker unique is it fundamentally changes the productivity of the developer, because of how much more productive they can be by focusing on the container. You don’t have to deal with the headache of ‘it worked on my laptop’; they can focus on optimizing the right infrastructure for the apps to run on knowing they have portability.”
Making Docker simpler to start and better integrated with Azure matters when you’re trying to take advantage of the agility Docker can enable. And having it in the cloud means that you can get the benefits of devops without a lot of internal changes. “With devops, part of the change is organizational change. The great thing about this model is it separates your apps from the constraints of infrastructure. You can change your org structure [to do devops with Docker] – but you don’t have to.”