The Docker machine is a command tool created by the docker team to manage docker servers. It automatically creates hosts and installs docker engine on them and configures the docker client to talk.
If you install the docker machine tool,you can use it like below:
$docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM host1 generic Running tcp://192.168.99.100:2376 host1 (master) host2 generic Running tcp://192.168.99.101:2376 host1 host3 generic Running tcp://192.168.99.102:2376 host1 demo0 virtualbox Stopped demo1 virtualbox Stopped demo2 virtualbox Stopped demo3 virtualbox Stopped infra virtualbox Stopped $docker-machine ssh host1 ... $docker $(docker-machine config host1) ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ea13099c15d3 swarm:latest "/swarm join --addr 1" 7 weeks ago Up 4 days 2375/tcp swarm-agent ...
It’s useful to use docker command with docker machine command to connect docker engine on multi hosts.
docker-machine config is just printed like below.
$docker-machine config host1 --tlsverify --tlscacert="/home/anarcher/.docker/machine/machines/host1/ca.pem" --tlscert="/home/anarcher/.docker/machine/machines/host1/cert.pem" --tlskey="/home/anarcher/.docker/machine/machines/host1/key.pem" -H=tcp://192.168.99.100:2376
As you know,the bash command substitution can make the output of docker-machine command to replace the command itself. It’s one of the funny things using unix shell, too. :-)
Docker machine keeps the configuraion files which are information to connect on docker hosts to ~/.docker/machine/. If you want to share it with the others,you just copy it and share it.
Docker machine is based on ssh authentication to set up docker host nodes. So you can log in hosts to use
docker-machine ssh [name].
Docker machine has many drivers that represent the virtual environments.The virtual environments are local linux,AWS,Digital ocean and many more. You can also add a existed Docker host to use driver
none or if the host doesn’t has a docker engine,you can use the driver
generic to install docker engine.
Docker machine has many options. So I have been using
grep command with Unix pipe for searching the right command.
$docker-machine create -h | grep digi --digitalocean-access-token Digital Ocean access token [$DIGITALOCEAN_ACCESS_TOKEN] --digitalocean-backups enable backups for droplet [$DIGITALOCEAN_BACKUPS] --digitalocean-image "ubuntu-14-04-x64" Digital Ocean Image [$DIGITALOCEAN_IMAGE] --digitalocean-ipv6 enable ipv6 for droplet [$DIGITALOCEAN_IPV6] --digitalocean-private-networking enable private networking for droplet [$DIGITALOCEAN_PRIVATE_NETWORKING] --digitalocean-region "nyc3" Digital Ocean region [$DIGITALOCEAN_REGION] --digitalocean-size "512mb" Digital Ocean size [$DIGITALOCEAN_SIZE]
Basically It’s a convenience tool which looks like other docker tools. But unlike
chef, It only care for Docker engine. If you want to host configuration, You should use other tools with