Programmatic API to Docker Machine (0.6.0+).
node examples/run-command ls /
const Machine = require('docker-machine')
const cmd = process.argv.slice(2)
const machine = new Machine()
// Start if not already started
machine.start(function (err) {
if (err) throw err
// Execute a command
machine.ssh(cmd, (err, result) => {
if (err) throw err
console.log(result)
})
})
node examples/list-machines
const Machine = require('docker-machine')
// List all machines with additional metadata
Machine.list({ inspect: true }, (err, machines) => {
if (err) throw err
console.log(machines)
})
node examples/create-machine
const Machine = require('docker-machine');
// Creates a machine with driver "virtualbox"
Machine.create('test', (err) => {
if (err) throw err
else console.log("machine 'test' created successfully!");
});
// Pass args related to the driver you use
var options = {
"driver": "virtualbox",
"virtualbox-memory": "1024"
};
Machine.create('test', options, (err) => {
if (err) throw err;
else console.log("machine 'test' created successfully!");
});
Options:
- name: defaults to
DOCKER_MACHINE_NAME
or "default"
Options:
Pass any args you want as key-value pairs, say,
var options = {
"driver": "virtualbox",
"virtualbox-memory": "1024"
};
Get lowercased status of the machine.
True if status is running
.
Start machine, if not already running.
Stop machine, if not already stopped.
Kill machine, if not already stopped.
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>'
}
Run a command via SSH. The command
can be a string or an array.
Get the output of docker-machine inspect
as a plain object with camelCase properties.
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)
})
Get all machines as an array, via docker-machine ls
. Each machine is a plain object with camelCase properties.
{
name: 'agent-1', // Machine name
activeHost: false, // Is the machine an active host?
activeSwarm: false, // Is the machine an active swarm master?
active: '*', // Human-readable combination of the above
driverName: 'virtualbox', // Driver name
state: 'running', // Machine state (running, stopped)
url: 'tcp://192.168.99.101:2376', // Machine URL
swarm: null, // Machine swarm name
dockerVersion: 'v1.12.0', // Docker Daemon version
responseTime: 980, // Time taken by the host to respond (ms)
error: null // Machine errors
}
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', // Plus all of the above
driver: { // Driver metadata
cpu: 1,
memory: 2048,
hostOnlyCidr: '192.168.99.1/24',
..
},
hostOptions: { // Various host options
engineOptions: ..
swarmOptions: ..
}
}
With npm do:
npm install docker-machine
MIT © Vincent Weevers