Docker Machine: Managing Docker Machines (with examples)
Docker Machine is a command-line tool that enables users to create and manage multiple virtual machines running Docker. Using Docker Machine, you can easily create, manage, and provision Docker hosts on various cloud platforms, virtualization platforms, or local machines.
In this article, we will explore eight different use cases of Docker Machine, ranging from listing currently running machines to inspecting detailed information about a specific machine. Each use case will be accompanied by code examples, motivations, explanations for the arguments, and example outputs. So without further ado, let’s dive in!
Listing Currently Running Docker Machines
The first use case is listing currently running Docker machines. This is useful when you want to see all the active machines managed by Docker Machine.
docker-machine ls
Motivation: To check the status of Docker machines and identify which machines are currently running.
Explanation: The docker-machine ls
command lists all the Docker machines along with their basic information such as name, active status, URL, and more.
Example Output:
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v19.03.12
Creating a New Docker Machine with a Specific Name
The second use case involves creating a new Docker machine with a specific name. This is useful when you want to provision a new Docker host.
docker-machine create name
Motivation: To create a new Docker machine with a custom name for a specific use case or project.
Explanation: The docker-machine create
command allows you to create a new Docker machine with a given name. You can specify additional options like the driver (e.g., VirtualBox, AWS, Azure, etc.) to choose the platform for the new machine.
Example Output:
Creating machine...
Running pre-create checks...
(30-example) Image cache directory does not exist, creating it at /Users/username/.docker/machine/cache...
(30-example) No default Boot2Docker ISO found locally, downloading the latest release...
(30-example) Latest release for github.com/boot2docker/boot2docker is v19.03.12
(30-example) Downloading /Users/username/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v19.03.12/boot2docker.iso...
(30-example) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
(30-example) Copying /Users/username/.docker/machine/cache/boot2docker.iso to /Users/username/.docker/machine/machines/30-example/boot2docker.iso...
(30-example) Creating VirtualBox VM...
(30-example) Creating SSH key...
(30-example) Starting the VM...
(30-example) Waiting for an IP...
Machine "30-example" was created.
Getting the Status of a Machine
The third use case involves fetching the status of a specific Docker machine. This is useful when you want to check if a machine is running or stopped.
docker-machine status name
Motivation: To determine the current status of a Docker machine and perform subsequent actions based on that status.
Explanation: The docker-machine status
command returns the current status of a Docker machine. The name argument specifies the machine for which you want to retrieve the status.
Example Output:
Running
Starting a Machine
The fourth use case is starting a Docker machine that is currently stopped. This is useful when you want to bring a machine back to an active state.
docker-machine start name
Motivation: To start a previously stopped Docker machine and make it ready for use.
Explanation: The docker-machine start
command starts a previously stopped Docker machine. The name argument specifies the machine you want to start.
Example Output:
Starting "default"...
(default) Waiting for SSH to be available...
Starting "default"...
Machine "default" has been started.
Stopping a Machine
The fifth use case involves stopping a running Docker machine. This is useful when you want to temporarily halt a machine’s operation.
docker-machine stop name
Motivation: To stop a running Docker machine and free up resources.
Explanation: The docker-machine stop
command stops a running Docker machine. The name argument specifies the machine you want to stop.
Example Output:
Stopping "default"...
Machine "default" was stopped.
Inspecting Information about a Machine
The sixth use case is inspecting detailed information about a specific Docker machine. This is useful when you want to gather machine-specific details.
docker-machine inspect name
Motivation: To retrieve in-depth information about a Docker machine, including its configuration, environment variables, and network settings.
Explanation: The docker-machine inspect
command provides detailed information about a Docker machine. The name argument specifies the machine you want to inspect.
Example Output:
{
"ConfigVersion": 3,
"Driver": {
"IPAddress": "192.168.99.100",
"MachineName": "machinename",
(...)
},
"HostOptions": {
"Env": [
"DOCKER_TLS_VERIFY=1",
"DOCKER_CERT_PATH=/Users/username/.docker/machine/machines/machinename",
(...)
]
},
(...)
}
In this article, we covered eight different use cases of Docker Machine, ranging from listing currently running machines to inspecting detailed information about a specific machine. Each use case provided code examples, motivations, explanations for the arguments, and example outputs. With this knowledge, you can effectively manage your Docker machines using Docker Machine and make the most out of your Docker development or production environment. Happy Dockerizing!