There are tons of different ways you can provision a Docker host on Microsoft Azure and I’d like to cover 3 major buckets of ways to accomplish this with some insight around why you might choose this route. Clustering of Docker hosts introduces many other tools and additional complexity, so we’ll just assume a single Docker host to Azure to get up and running quickly.
- Docker MachineIs described in the embedded Edge Show interview I did with Ahmet. This option is great because you don’t even have to leave the comfort of your docker commandline and within a few commands you’ve configured and directly provisioned a Docker host on Azure to run your containers.
- Docker Azure Gallery VM imageYou can of course use the Azure Portal and manually provision a Docker VM image in the Azure gallery. This also means you can use all of the ways to automate provisioning of a gallery VM image to Azure. This includes provisioning tools such as PowerShell, xPlat CLI, Azure Deployment Templates, MAML, Vagrant, Puppet, and Chef-Knife. This option is good if you are comfortable in one of those toolsets and enables you to more easily spin up many individual Docker hosts at once. If you want to spin up many hosts, you should ideally use the new Azure Resource Management deployment templates which uses the new Azure API. See two example templates in the Azure RM deployment gallery here and here.
- Automated build solutionsOf course you could automate the above two solutions, but if you want infrastructure as code to provision Docker from a base virtual machine image (i.e. Ubuntu) and then automatically install and configure Docker and whatever other host customizations you’d like, then you’d probably go down the path of a solution which is well equipped to do this in an idempotent way. This is the most complex solution, but enables additional advantages like making it easier to do upgrades with newer versions of the host programs and move to a clustered model.
- Chef-provisioning-azure and the Docker Cookbook – enables an idempotent way to provision the host from the ground up. You can checkout this Edge Show on Chef-provisioning-Azure.
- Puppet – Enterprise has similar capabilities utilizing Puppet Forge modules like this to install and configure Docker. Similarly they recently announced Razor to provision bare metal.