docker-machine ls

Estimated reading time: 3 minutes

Usage: docker-machine ls [OPTIONS] [arg...]

List machines

Options:

   --quiet, -q                                  Enable quiet mode
   --filter [--filter option --filter option]   Filter output based on conditions provided
   --timeout, -t "10"                           Timeout in seconds, default to 10s
   --format, -f                                 Pretty-print machines using a Go template

Timeout

The ls command tries to reach each host in parallel. If a given host does not answer in less than 10 seconds, the ls command states that this host is in Timeout state. In some circumstances (poor connection, high load, or while troubleshooting), you may want to increase or decrease this value. You can use the -t flag for this purpose with a numerical value in seconds.

Example

$ docker-machine ls -t 12
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER   ERRORS
default   -        virtualbox   Running   tcp://192.168.99.100:2376           v1.9.1

Filtering

The filtering flag (--filter) format is a key=value pair. If there is more than one filter, then pass multiple flags. For example: --filter "foo=bar" --filter "bif=baz"

The currently supported filters are:

  • driver (driver name)
  • swarm (swarm master’s name)
  • state (Running|Paused|Saved|Stopped|Stopping|Starting|Error)
  • name (Machine name returned by driver, supports golang style regular expressions)
  • label (Machine created with --engine-label option, can be filtered with label=<key>[=<value>])

Examples

$ docker-machine ls
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER   ERRORS
dev    -        virtualbox   Stopped
foo0   -        virtualbox   Running   tcp://192.168.99.105:2376           v1.9.1
foo1   -        virtualbox   Running   tcp://192.168.99.106:2376           v1.9.1
foo2   *        virtualbox   Running   tcp://192.168.99.107:2376           v1.9.1

$ docker-machine ls --filter name=foo0
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER   ERRORS
foo0   -        virtualbox   Running   tcp://192.168.99.105:2376           v1.9.1

$ docker-machine ls --filter driver=virtualbox --filter state=Stopped
NAME   ACTIVE   DRIVER       STATE     URL   SWARM   DOCKER   ERRORS
dev    -        virtualbox   Stopped                 v1.9.1

$ docker-machine ls --filter label=com.class.app=foo1 --filter label=com.class.app=foo2
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER   ERRORS
foo1   -        virtualbox   Running   tcp://192.168.99.105:2376           v1.9.1
foo2   *        virtualbox   Running   tcp://192.168.99.107:2376           v1.9.1

Formatting

The formatting option (--format) pretty-prints machines using a Go template.

Valid placeholders for the Go template are listed below:

Placeholder Description
.Name Machine name
.Active Is the machine active?
.ActiveHost Is the machine an active non-swarm host?
.ActiveSwarm Is the machine an active swarm master?
.DriverName Driver name
.State Machine state (running, stopped...)
.URL Machine URL
.Swarm Machine swarm name
.Error Machine errors
.DockerVersion Docker Daemon version
.ResponseTime Time taken by the host to respond

When using the --format option, the ls command either outputs the data exactly as the template declares or, when using the table directive, includes column headers as well.

The following example uses a template without headers and outputs the Name and Driver entries separated by a colon for all running machines:

$ docker-machine ls --format "{{.Name}}: {{.DriverName}}"
default: virtualbox
ec2: amazonec2

To list all machine names with their driver in a table format you can use:

$ docker-machine ls --format "table {{.Name}} {{.DriverName}}"
NAME     DRIVER
default  virtualbox
ec2      amazonec2
machine, ls, subcommand