A tool that can be executed from the command line, such as creating, starting, stopping, and restarting a virtual machine equipped with Docker Engine. It is possible to start and manage a Docker host </ b> not only on a local PC but also on a remote cloud provider.
People using Docker for Mac, Docker Toolbox -Start a virtual machine with VirtualBox
People using Docker for Windows -Start a virtual machine with Hyper-V
Download Docker Machine
% base=https://github.com/docker/machine/releases/download/v0.16.0 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine
Usage: docker-machine [OPTIONS] COMMAND [arg...] Create and manage machines running Docker. Version: 0.16.0, build 702c267f Author: Docker Machine Contributors - <https://github.com/docker/machine> Options: --debug, -D Enable debug mode --storage-path, -s "/Users/torigoshikouki/.docker/machine" Configures storage path [$MACHINE_STORAGE_PATH] --tls-ca-cert CA to verify remotes against [$MACHINE_TLS_CA_CERT] --tls-ca-key Private key to generate certificates [$MACHINE_TLS_CA_KEY] --tls-client-cert Client cert to use for TLS [$MACHINE_TLS_CLIENT_CERT] --tls-client-key Private key used in client TLS auth [$MACHINE_TLS_CLIENT_KEY] --github-api-token Token to use for requests to the Github API [$MACHINE_GITHUB_API_TOKEN] --native-ssh Use the native (Go-based) SSH implementation. [$MACHINE_NATIVE_SSH] --bugsnag-api-token BugSnag API token for crash reporting [$MACHINE_BUGSNAG_API_TOKEN] --help, -h show help --version, -v print the version Commands: active Print which machine is active config Print the connection config for machine create Create a machine env Display the commands to set up the environment for the Docker client inspect Inspect information about a machine ip Get the IP address of a machine kill Kill a machine ls List machines provision Re-provision existing machines regenerate-certs Regenerate TLS Certificates for a machine restart Restart a machine rm Remove a machine ssh Log into or run a command on a machine with SSH. scp Copy files between machines mount Mount or unmount a directory from a machine with SSHFS. start Start a machine status Get the status of a machine stop Stop a machine upgrade Upgrade a machine to the latest version of Docker url Get the URL of a machine version Show the Docker Machine version or a machine docker version help Shows a list of commands or help for one command Run 'docker-machine COMMAND --help' for more information on a command.
The above will be displayed when the download is complete.
-#View docker host % docker-machine ls
-# % docker-machine create —driver virtualbox Docker hostname % docker-machine create —driver virtualbox default -#View docker host % docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default - virtualbox Running tcp://192.168.99.100:2376 v19.03.12
— Driver virtualbox uses virtualbox by default, so you don't need to add it. You can see that a docker host called "default" has been created.
-# docker-machine env docker hostname % docker-machine env default -#The setting command for setting to the docker host to be operated is displayed. export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="/Users/username/.docker/machine/machines/default" export DOCKER_MACHINE_NAME="default" # Run this command to configure your shell: # eval $(docker-machine env default)
If you set the environment variable of the export part, the operation target of the docker command will be set to the docker host specified in the argument of env. However, as described below, it can be executed collectively by executing ** eval $ (docker-machine env default) **.
-#View docker host % docker-machine ls -#"*" Is attached to ACTIVE, and you can check which docker host is ACTIVE. NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * virtualbox Running tcp://192.168.99.100:2376 v19.03.12 -#Docker run hello for confirmation-Start in world % docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
"Hello from Docker!" This means that it is running on the ** default host ** created this time, not the virtual machine such as Docker Mac that I have been using so far. You can also ssh to the host with ** docker-machine ssh **.
-# % docker-machine ssh docker hostname % docker-machine ssh default docker@default:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ab7af80f762d hello-world "/hello" 4 minutes ago Exited (0) 4 minutes ago cranky_mccarthy
Now you can see that the container has run on the docker host. Return to the original terminal with exit
-# % docker-machine ip docker host name % docker-machine ip default 192.168.99.100
-#Start nginx % docker run -d -p 8080:80 nginx
After starting, check at 192.168.99.100:8080. It was started when the docker host was created, but if you want to do it explicitly, use ** docker-machine start ** or ** docker-machine stop **.
-# % docker-machine stop docker host name % docker-machine stop default -#View docker host % docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default - virtualbox Stopped Unknown
It can be seen that the STATE has changed to ** "Stopped" ** and is stopped.
-# % docker-machine start docker host name % docker-machine start default -#View docker host % docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * virtualbox Running tcp://192.168.99.100:2376 v19.03.12
You can see that the STATE has changed to ** "Running" ** and it is running.
If you do not specify the docker host as an argument, the Env, stop, and start commands will automatically operate as if the name ** default ** was specified.
It can be canceled by deleting the environment variable set by the Docker-machine env command.
-# Docker-The command to delete the environment variable of machine is displayed. % docker-machine env -u unset DOCKER_TLS_VERIFY unset DOCKER_HOST unset DOCKER_CERT_PATH unset DOCKER_MACHINE_NAME # Run this command to configure your shell: # eval $(docker-machine env -u) -#Eval as set$(docker-machine env -u)You can cancel all at once with. % eval $(docker-machine env -u) -#Full view of docker host % docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default - virtualbox Running tcp://192.168.99.100:2376 v19.03.12
You can see that ACTIVE becomes ** "-" ** and is released.