At DockerCon EU earlier this year, we announced Docker Machine, a tool that makes it really easy to go from “zero to Docker”. Machine creates Docker Engines on your computer, on cloud providers, and/or in your data center, and then configures the Docker client to securely talk to them.
It works a bit like this:
$ docker-machine create -d virtualbox dev [info] Downloading boot2docker... [info] Creating SSH key... [info] Creating VirtualBox VM... [info] Starting VirtualBox VM... [info] Waiting for VM to start... [info] "dev" has been created and is now the active machine. [info] To point your Docker client at it, run this in your shell: $(docker-machine env dev) $ $(docker-machine env dev) $ docker run busybox echo hello world Unable to find image 'busybox' locally Pulling repository busybox e72ac664f4f0: Download complete 511136ea3c5a: Download complete df7546f9f060: Download complete e433a6c5b276: Download complete hello world
Today we’re releasing a beta version of Machine, available for download here. It has support for the following providers:
- Amazon EC2
- Microsoft Azure
- Microsoft Hyper-V
- Google Compute Engine
- VMware Fusion
- VMware vCloud Air
- VMware vSphere
In addition to the above, there are open PRs for nine more providers. This would not be possible without the tremendous support from contributors, the majority of which are outside Docker. Many thanks to all who have contributed (especially sthulb, ggiamarchi, jeffmendoza and frapposelli)! If you would like to use a provider not already included or with an open PR, please hop in IRC (#docker-machine on freenode) and let us know – we’d love to help out.
For this beta release of Machine, we are looking for feedback as we work towards stability across the included set of drivers. While Machine is great for local development and testing, we do not currently recommend it be used in production. Use at your own risk.
With such a large footprint across cloud providers, we know there is a lot of room for improvement. We strongly encourage anyone and everyone to test it out and give feedback. That being said, here is what Machine is capable of today:
- Provision Docker Engines across various providers both local and remote, secured with TLS, or not.
- Lightweight management of machines: Starting, stopping, removing, etc.
- Run remote commands or log in to machines via SSH
- Upgrade the Docker Engine when a new version is released
Check out this video for a demo of how it works:
There’s loads of stuff already on the roadmap for Machine including an API and integration with Swarm. The API will open up integration with other tools and allow several people in a team to manage the same set of machines. Swarm integration will include provisioning Swarm clusters across any of the providers listed above; experimental support for this is in Machine today.
In my short time working on Docker Machine, I have come to really like the power it provides. Setting up a local Docker Engine is not all that difficult today. You can use Boot2Docker or create a local VM and “apt-get” it pretty easily. However, I also want things like TLS security and remote providers. Before Machine, I had my own set of scripts that I used to configure these things. With Machine, I no longer have to worry about updating provider images (AMIs, etc) or generating TLS certs to make sure my DigitalOcean instance is secure. I can quickly deploy replacement instances making immutable infrastructure a reality without a mess of custom scripts or config management.
I cannot thank the community enough for all of your help and support in getting the beta of Machine in the current state. It is an honor to work with such great people across so many organizations and companies. I can’t wait to see what we build from this.
Learn More about Machine
- Download Machine
- Machine on GitHub
- #docker-machine on Freenode
- Machine roadmap
- Read more about orchestrating Docker with Machine, Swarm and Compose
- Register for this Online Meetup on Machine, Swarm and Compose