开始使用本地VM | Get started with a local VM (Machine)
Get started with Docker Machine and a local VM
我们来看看如何在docker-machine
本地虚拟机中创建,使用和管理Docker主机。
先决条件信息
随着Docker for Mac和Docker for Windows作为Docker Toolbox的替代品的出现,我们建议您将这些用于Docker主要工作流程。您可以使用这些应用程序在本地系统上本地运行Docker,而无需使用Docker Machine。(请参阅Docker for Mac与Docker工具箱,了解Mac上的解释。)
然而,现在,如果您想创建多个
本地机器,您仍然需要Docker Machine来创建和管理用于多节点实验的机器。Mac的Docker和Windows的Docker都包含最新版本的Docker Machine,所以当你安装其中任何一个时,你都会得到docker-machine
。
新解决方案带有自己的本地虚拟化解决方案,而不是Oracle VirtualBox,因此在使用Machine创建本地VM时请记住以下注意事项。
Docker for Mac
- 您可以docker-machine create
与virtualbox
驱动程序一起使用来创建其他本地计算机。
如果您使用Docker for Windows
Windows版Docker使用Microsoft Hyper-V进行虚拟化,而Hyper-V与Oracle VirtualBox不兼容。因此,您无法同时运行这两个解决方案。但是仍然可以使用docker-machine
Microsoft Hyper-V驱动程序来创建更多本地VM。
先决条件是:
- 安装Docker for Windows并运行(要求启用虚拟化和Hyper-V,如安装Docker for Windows之前需要了解的内容所述)。
如果您使用的是Mac版Docker
Docker for Mac使用HyperKit,这是一款轻量级的macOS虚拟化解决方案,构建于macOS 10.10 Yosemite及更高版本的Hypervisor.framework之上。
目前,docker-machine create
HyperKit 没有驱动程序,因此您将使用virtualbox
驱动程序创建本地计算机。(请参阅适用于Oracle VirtualBox的Docker计算机驱动程序。)请注意,您可以在同一个系统上运行HyperKit和Oracle VirtualBox。要了解更多信息,请参阅Docker for Mac与Docker Toolbox。
- 确保您的系统上正确安装了最新的VirtualBox(作为早期Toolbox安装的一部分,或者手动安装)。
如果您使用的是Docker Toolbox
Mac的Docker和Windows的Docker都需要各自操作系统的更新版本,因此具有较旧操作系统版本的用户必须使用Docker Toolbox。
- 如果您在Mac或旧版Windows系统(不使用Hyper-V)上使用Docker Toolbox,则将使用该
virtualbox
驱动程序创建基于Oracle VirtualBox的本地计算机。(请参阅Oracle VirtualBox的Docker Machine驱动程序。)
使用机器运行Docker容器
要运行Docker容器,您需要:
- 创建一个新的(或启动一个现有的)Docker虚拟机
一旦你创建一台机器,你可以随时重复使用它。像任何VirtualBox VM一样,它在使用之间保持其配置。
这里的示例显示了如何创建和启动计算机,运行Docker命令以及使用容器。
创建一台机器
- 打开命令外壳或终端窗口。这些命令示例显示了一个Bash shell。对于不同的shell,例如C Shell,除非另有说明,否则相同的命令是相同的。
- If you are using Toolbox on Mac, Toolbox on older Windows systems without Hyper-V, or Docker for Mac, use `virtualbox` as the driver, as shown in this example. (The Docker Machine VirtualBox driver reference is [here](../drivers/virtualbox/index).) (See [prerequisites](index#prerequisite-information) above to learn more.)
- On Docker for Windows systems that support Hyper-V, use the `hyperv` driver as shown in the [Docker Machine Microsoft Hyper-V driver reference](../drivers/hyper-v/index). (See [prerequisites](index#prerequisite-information) above to learn more.) $ docker-machine create --driver virtualbox default Running pre-create checks... Creating machine... (staging) Copying /Users/ripley/.docker/machine/cache/boot2docker.iso to /Users/ripley/.docker/machine/machines/default/boot2docker.iso... (staging) Creating VirtualBox VM... (staging) Creating SSH key... (staging) Starting the VM... (staging) Waiting for an IP... Waiting for machine to be running, this may take a few minutes... Machine is running, waiting for SSH to be available... Detecting operating system of created instance... Detecting the provisioner... Provisioning with boot2docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect Docker to this machine, run: docker-machine env default
This command downloads a lightweight Linux distribution (boot2docker) with the Docker daemon installed, and creates and starts a VirtualBox VM with Docker running.
- 再次列出可用的机器以查看您新铸造的机器。$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * virtualbox运行tcp://192.168.99.187:2376 v1.9.1
运行容器并尝试使用机器命令
运行一个容器docker run
以验证您的设置。
- 使用
docker run
下载并busybox
使用简单的'echo'命令运行。$docker run
busybox
echo hello world无法在本地查找'busybox
'图像存储库busybox
e72ac664f4f0:下载完成511136ea3c5a:下载完成df7546f9f060:下载完成e433a6c5b276:下载complete hello world
您可以创建和管理尽可能多的运行Docker的本地虚拟机; docker-machine create
再次运行。所有创建的机器都将出现在输出中docker-machine ls
。
启动和停止机器
如果您暂时完成了主机的使用,则可以将其停止docker-machine stop
并稍后再次启动docker-machine start
。
$ docker-machine stop default
$ docker-machine start default
在机器上操作而不指定名称
如果没有指定机器名称docker-machine
,某些命令将假定给定的操作应该在名为default
(如果存在)的计算机上运行。由于使用本地虚拟机名称default
是一种常见模式,因此您可以使用最常用的机器命令保存一些输入内容。
例如:
$ docker-machine stop
Stopping "default"....
Machine "default" was stopped.
$ docker-machine start
Starting "default"...
(default) Waiting for an IP...
Machine "default" was started.
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
$ eval $(docker-machine env)
$ docker-machine ip
192.168.99.100
遵循这种风格的命令是:
- `docker-machine config`
- `docker-machine env`
- `docker-machine inspect`
- `docker-machine ip`
- `docker-machine kill`
- `docker-machine provision`
- `docker-machine regenerate-certs`
- `docker-machine restart`
- `docker-machine ssh`
- `docker-machine start`
- `docker-machine status`
- `docker-machine stop`
- `docker-machine upgrade`
- `docker-machine url`
对于除default
上述以外的机器和以外的其他机器,您必须始终将该名称明确指定为参数。
未设置当前shell中的环境变量
您可能想要使用当前shell连接到不同的Docker Engine。例如,如果您运行Docker for Mac与Docker Toolbox同时运行,并希望与两个不同的Docker引擎交谈,或者在Docker Cloud上运行群集,并希望在管理群集和使用Docker主机之间切换,那么情况就是这样。在这两种情况下,您都可以选择将当前shell的环境切换到不同的Docker引擎。
- 运行
env|grep DOCKER
以检查是否设置了DOCKER
环境变量。$ env | grepDOCKER
DOCKER
_HOST = tcp://192.168.99.100:2376DOCKER
_MACHINE_NAME = defaultDOCKER
_TLS_VERIFY = 1DOCKER
_CERT_PATH = / Users / victoriabialas / .docker / machine / machines / default如果它返回输出(如示例所示),则可以取消设置DOCKER
环境变量。
- Run the `unset` command on the following `DOCKER` environment variables. unset DOCKER_TLS_VERIFY unset DOCKER_CERT_PATH unset DOCKER_MACHINE_NAME unset DOCKER_HOST
- Alternatively, run a shortcut command `docker-machine env -u` to show the command you need to run to unset all DOCKER variables: $ 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)
Run eval $(docker-machine env -u) to unset all DOCKER variables in the current shell.
- 现在,在运行上述任一命令之后,该命令将不返回任何输出。$ env | grep DOCKER如果您正在运行Docker for Mac,则可以运行Docker命令来与安装了该应用程序的Docker Engine进行对话。如果您在Docker Cloud上运行群集,则可以重新运行
export
用于连接群集的命令。由于Docker for Windows与Toolbox不兼容,因此此场景不适用,因为Docker for Windows使用随附的Docker Engine和Docker Machine。
启动时启动本地计算机
为了确保在每个shell会话开始时自动配置Docker客户端,一些用户喜欢嵌入eval $(docker-machine env default)
他们的shell配置文件(例如~/.bash_profile
文件)。但是,如果default
机器没有运行,这会失败。如果需要,您可以将系统配置为default
自动启动机器。
这里是一个如何在macOS上进行配置的例子。
使用以下内容创建一个名为com.docker.machine.default.plist
under 的文件~/Library/LaunchAgents
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string>
</dict>
<key>Label</key>
<string>com.docker.machine.default</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/docker-machine</string>
<string>start</string>
<string>default</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
您可以更改default
上面的字符串,以LaunchAgent
启动您所需的任何机器。
下一步去哪里
- 在您的云提供商上配置多个Docker主机