You can use Docker Machine to easily deploy an Instance with a running Docker Host on Exoscale. Instead of using Vagrant or the Docker toolbox to install the host locally, you use Docker Machine to spawn a new instance, install Docker on it, configure the local Docker client to talk to the Docker host and provide a number of commands for managing it.
Spawn an Instance with a running Docker Host
Start by retrieveing the necessary API keys in your account screen and set the corresponding
EXOSCALE_API_SECRET environment variables:
export EXOSCALE_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx export EXOSCALE_API_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
You need to download the docker-machine binary corresponfing to your local computer architecture. For example:
$ curl -L https://github.com/docker/machine/releases/download/v0.6.0/docker-machine-`uname -s`-`uname -m` > \ docker-machine $ chmod +x docker-machine $ ./docker-machine --version docker-machine version 0.6.0, build e27fb87
If everything looks good you can now deploy your Docker host. Machine will automatically set up a new SSH key for you and deploy a new Instance. You can specify the desired instance size via command line options or environment variables. You’ll find a detail reference on the official documenation of the Exoscale provider for docker-machine.
$ ./docker-machine create -d exoscale foobar Running pre-create checks... Creating machine... [...] Docker is up and running! To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: ./docker-machine env foobar
You can verify that everything worked out smoothly having a peek in the console: you should find your new Instance and a new SSH key.
To configure your local Docker client to use this remote Docker host, simply execute the command that machine suggested you in the last output.
$ ./docker-machine env foobar export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://184.108.40.206:2376" export DOCKER_CERT_PATH="/Users/sebastiengoasguen/.docker/ machine/machines/foobar" export DOCKER_MACHINE_NAME="foobar" # Run this command to configure your shell: # eval "$(docker-machine env foobar)" $ eval "$(./docker-machine env foobar)" $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Congratulations your host is now up and running and you can connect and operate on it from your local Docker cli!
Manage the Instance and connect to your Docker Host
Docker Machine offers you also basic management capabilities: start, stop, rm, and so forth. Run docker-machine with no arguments to get a full man page with all possible commands:
For instance, you can list the machine you created previously, obtain its IP address, and connect to it via SSH:
$ ./docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS foobar * exoscale Running tcp://220.127.116.11:2376 v1.10.2 $ ./docker-machine ip foobar 18.104.22.168 $ ./docker-machine ssh foobar Welcome to Ubuntu 15.10 (GNU/Linux 4.2.0-16-generic x86_64) ... ubuntu@foobar:~$
Where to go from there
You can also have a look at our video tutorial on how to deploy a Docker Swarm with Docker Machine which extends those concepts further.