docker-machine
Programmatic API to Docker Machine (0.6.0+).
example
node examples/run-command ls /
const Machine = require('docker-machine')
const cmd = process.argv.slice(2)
const machine = new Machine()
machine.start(function (err) {
if (err) throw err
machine.ssh(cmd, (err, result) => {
if (err) throw err
console.log(result)
})
})
node examples/list-machines
const Machine = require('docker-machine')
Machine.list({ inspect: true }, (err, machines) => {
if (err) throw err
console.log(machines)
})
api
new Machine([name || opts])
Options:
- name: defaults to
DOCKER_MACHINE_NAME
or "default"
machine.status((err, status) => ..)
Get lowercased status of the machine.
machine.isRunning((err, running) => ..)
True if status is running
.
machine.start(err => ..)
Start machine, if not already running.
machine.stop(err => ..)
Stop machine, if not already stopped.
machine.kill(err => ..)
Kill machine, if not already stopped.
machine.env([opts], (err, result) => ..)
Get the environment variables to dictate that Docker should run a command against a particular machine. By default, env()
returns the output from docker-machine env
as-is. That is, a script which can be run in a subshell. Options:
- shell: custom shell. Ignored if
parse
is true. - parse: if true,
result
will be a plain object:
{
DOCKER_TLS_VERIFY: '1',
DOCKER_HOST: 'tcp://<ip>:<port>',
DOCKER_CERT_PATH: '<home>/.docker/machine/machines/<name>',
DOCKER_MACHINE_NAME: '<name>'
}
machine.ssh(command, (err, result) => ..)
Run a command via SSH. The command
can be a string or an array.
machine.inspect((err, result) => ..)
Get the output of docker-machine inspect
as a plain object with camelCase properties.
static methods
All of the above methods (from status()
to inspect()
) are also accessible as static methods, where the first argument is a name
. For example:
const Machine = require('docker-machine')
Machine.env('default', { json: true }, (err, result) => {
console.log(result.DOCKER_HOST)
})
Machine.list([opts], (err, machines) => ..)
Get all machines as an array, via docker-machine ls
. Each machine is a plain object with camelCase properties.
{
name: 'agent-1',
activeHost: false,
activeSwarm: false,
active: '*',
driverName: 'virtualbox',
state: 'running',
url: 'tcp://192.168.99.101:2376',
swarm: null,
dockerVersion: 'v1.12.0',
responseTime: 980,
error: null
}
Options:
- timeout:
ls
timeout in seconds (see docker/machine#1696) - inspect: if true, also include the metadata from
inspect()
for each machine:
{
name: 'agent-1',
driver: {
cpu: 1,
memory: 2048,
hostOnlyCidr: '192.168.99.1/24',
..
},
hostOptions: {
engineOptions: ..
swarmOptions: ..
}
}
install
With npm do:
npm install docker-machine
license
MIT © Vincent Weevers