Use Docker Machine to provision hosts on cloud providers
Estimated reading time: 4 minutesTry out Docker Cloud!
We suggest using Docker Cloud as the most up-to-date way to run Docker on your cloud providers. To get started, see Docker Cloud docs home page, Docker Cloud Settings and Docker ID, and Swarms in Docker Cloud (Beta). If you are running Edge channel Docker for Mac or Windows, you can access your Docker Cloud account from those Docker desktop applications. See Docker Cloud (Edge feature) on Mac or Windows.
Docker Machine will still work as described here, but Docker Cloud supercedes Machine for this purpose.
Docker Machine driver plugins are available for many cloud platforms, so you can use Machine to provision cloud hosts. When you use Docker Machine for provisioning, you create cloud hosts with Docker Engine installed on them.
You’ll need to install and run Docker Machine, and create an account with the cloud provider.
Then you provide account verification, security credentials, and configuration
options for the providers as flags to docker-machine create
. The flags are
unique for each cloud-specific driver. For instance, to pass a Digital Ocean
access token you use the --digitalocean-access-token
flag. Take a look at the
examples below for Digital Ocean and AWS.
Examples
Digital Ocean
For Digital Ocean, this command creates a Droplet (cloud host) called “docker-sandbox”.
$ docker-machine create --driver digitalocean --digitalocean-access-token xxxxx docker-sandbox
For a step-by-step guide on using Machine to create Docker hosts on Digital Ocean, see the Digital Ocean Example.
Amazon Web Services (AWS)
For AWS EC2, this command creates an instance called “aws-sandbox”:
$ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C******* aws-sandbox
For a step-by-step guide on using Machine to create Dockerized AWS instances, see the Amazon Web Services (AWS) example.
The docker-machine create command
The docker-machine create
command typically requires that you specify, at a
minimum:
-
--driver
- to indicate the provider on which to create the machine (VirtualBox, DigitalOcean, AWS, and so on) -
Account verification and security credentials (for cloud providers), specific to the cloud service you are using
-
<machine>
- name of the host you want to create
For convenience, docker-machine
will use sensible defaults for choosing
settings such as the image that the server is based on, but you override the
defaults using the respective flags (e.g. --digitalocean-image
). This is
useful if, for example, you want to create a cloud server with a lot of memory
and CPUs (by default docker-machine
creates a small server).
For a full list of the flags/settings available and their defaults, see the
output of docker-machine create -h
at the command line, the
create command in
the Machine command line reference, and driver options and operating system
defaults in the
Machine driver reference.
Drivers for cloud providers
When you install Docker Machine, you get a set of drivers for various cloud providers (like Amazon Web Services, Digital Ocean, or Microsoft Azure) and local providers (like Oracle VirtualBox, VMWare Fusion, or Microsoft Hyper-V).
See Docker Machine driver reference for details on the drivers, including required flags and configuration options (which vary by provider).
3rd-party driver plugins
Several Docker Machine driver plugins for use with other cloud platforms are available from 3rd party contributors. These are use-at-your-own-risk plugins, not maintained by or formally associated with Docker.
Add a host without a driver
You can register an already existing docker host by passing the daemon url. With that, you can have the same workflow as on a host provisioned by docker-machine.
$ docker-machine create --driver none --url=tcp://50.134.234.20:2376 custombox
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL
custombox * none Running tcp://50.134.234.20:2376
Use Machine to provision Docker Swarm clusters
Swarm mode supercedes Docker Machine provisioning of swarm clusters
In previous releases, Docker Machine was used to provision swarm clusters, but this is legacy. Swarm mode, built into Docker Engine, supercedes Machine provisioning of swarm clusters. The topics below show you how to get started with the new swarm mode.
You can use Docker Machine to create local virtual hosts on which to deploy and test swarm mode clusters.
Good places to start working with Docker Machine and swarm mode are these tutorials:
Where to go next
- Example: Provision Dockerized Digital Ocean Droplets
- Example: Provision Dockerized AWS EC2 Instances
- Understand Machine concepts
- Docker Machine driver reference
- Docker Machine subcommand reference
- Provision a Docker Swarm cluster with Docker Machine