非常教程

Docker 17参考手册

机器 | Machine

开始使用本地VM | Get started with a local VM (Machine)

我们来看看如何在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 createvirtualbox驱动程序一起使用来创建其他本地计算机。
  • 泊坞窗的Windows -您可以使用docker-machine createhyperv驱动程序来创建额外的本地机器。

如果您使用Docker for Windows

Windows版Docker使用Microsoft Hyper-V进行虚拟化,而Hyper-V与Oracle VirtualBox不兼容。因此,您无法同时运行这两个解决方案。但是仍然可以使用docker-machineMicrosoft Hyper-V驱动程序来创建更多本地VM。

先决条件是:

  • 安装Docker for Windows并运行(要求启用虚拟化和Hyper-V,如安装Docker for Windows之前需要了解的内容所述)。
  • 设置Hyper-V驱动程序以使用外部虚拟网络交换机请参阅适用于Microsoft Hyper-V主题的Docker Machine驱动程序,其中包括/machine/drivers/hyper-v.md#example如何执行此操作。

如果您使用的是Mac版Docker

Docker for Mac使用HyperKit,这是一款轻量级的macOS虚拟化解决方案,构建于macOS 10.10 Yosemite及更高版本的Hypervisor.framework之上。

目前,docker-machine createHyperKit 没有驱动程序,因此您将使用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驱动程序。)
  • 如果您在具有Hyper-V但无法运行Docker for Windows(例如Windows 8 Pro)的Windows系统上使用Docker Toolbox,则必须使用该hyperv驱动程序创建本地计算机。(请参阅适用于Microsoft Hyper-V的Docker计算机驱动程序。)
  • 确保你的系统上正确安装了最新的VirtualBox。如果您使用Toolbox或Docker for Windows安装Docker Machine,则会自动安装VirtualBox。
  • 如果您使用快速入门终端启动第一台机器并将终端环境设置为指向它,则会自动创建一个默认机器。如果是这种情况,您仍然可以按照这些步骤进行操作,但创建另一台机器并将其命名为“默认”以外的其他机器(例如,登台或沙箱)。

使用机器运行Docker容器

要运行Docker容器,您需要:

  • 创建一个新的(或启动一个现有的)Docker虚拟机
  • 将您的环境切换到新的VM
  • 使用docker客户端创建,加载和管理容器

一旦你创建一台机器,你可以随时重复使用它。像任何VirtualBox VM一样,它在使用之间保持其配置。

这里的示例显示了如何创建和启动计算机,运行Docker命令以及使用容器。

创建一台机器

  1. 打开命令外壳或终端窗口。这些命令示例显示了一个Bash shell。对于不同的shell,例如C Shell,除非另有说明,否则相同的命令是相同的。
  2. 使用docker-machine ls列出可用的机器。在这个例子中,还没有创建机器。$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
  3. 创建一台机器。运行该docker-machine create命令,将相应的驱动程序传递给该--driver标志并提供一个机器名称。如果这是您的第一台机器,请将其命名default为示例中所示。如果您已有“默认”机器,请为此新机器选择另一个名称。
-  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.
 
  1. 再次列出可用的机器以查看您新铸造的机器。$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * virtualbox运行tcp://192.168.99.187:2376 v1.9.1
  2. 获取新VM的环境命令。如docker-machine create命令输出中所述,您需要告诉Docker与新机器通信。你可以用docker-machine env命令来做到这一点。$ docker-machine env default export DOCKER_TLS_VERIFY =“1”export DOCKER_HOST =“tcp://172.16.62.130:2376”export DOCKER_CERT_PATH =“/ Users / <yourusername> /。docker / machine / machines / default”export DOCKER_MACHINE_NAME =“默认“#运行这个命令来配置你的shell:#eval”$(docker-machine env default)“
  3. 将你的外壳连接到新机器上。$ eval“$(docker-machine env default)” 注意:如果您正在使用fish,或者Windows外壳(如Powershell),cmd.exe则上述方法将无法正常工作。相反,请参阅env命令的文档以了解如何为shell设置环境变量。这为Docker客户端将读取的当前shell设置环境变量,它指定TLS设置。每次打开新shell或重新启动计算机时都需要执行此操作。(另请参阅如何在当前shell中取消设置环境变量。)现在可以在此主机上运行Docker命令。

运行容器并尝试使用机器命令

运行一个容器docker run以验证您的设置。

  1. 使用docker run下载并busybox使用简单的'echo'命令运行。$ docker run busybox echo hello world无法在本地查找'busybox'图像存储库busybox e72ac664f4f0:下载完成511136ea3c5a:下载完成df7546f9f060:下载完成e433a6c5b276:下载complete hello world
  2. 获取主机IP地址。Docker主机的IP地址上提供了任何公开的端口,您可以使用以下docker-machine ip命令获得:$ docker-machine ip default 192.168.99.100
  3. 使用以下命令在容器中运行一个Nginx网络服务器:$ docker run -d -p 8000:80 nginx当图像完成拉动时,您可以在端口8000上的IP地址上点击服务器docker-machine ip。例如:$ curl $(docker-machine ip default):8000 <!DOCTYPE html> <html> <head> <title>欢迎来到nginx!</ title> <style> body {width:35em; 保证金:0汽车; font-family:Tahoma,Verdana,Arial,sans-serif; } </ style> </ head> <body> <h1>欢迎使用nginx!</ h1> <p>如果您看到此页面,nginx web服务器已成功安装并正常运行。需要进一步配置。</ p> <p>有关在线文档和支持,请参阅<a href="http://nginx.org/"> nginx.org </a>。商业支持是可在<a href="http://nginx.com/"> nginx.com </a>上获得。</ p>

您可以创建和管理尽可能多的运行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引擎。

  1. 运行env|grep DOCKER以检查是否设置了DOCKER环境变量。$ env | grep DOCKER DOCKER_HOST = tcp://192.168.99.100:2376 DOCKER_MACHINE_NAME = default DOCKER_TLS_VERIFY = 1 DOCKER_CERT_PATH = / Users / victoriabialas / .docker / machine / machines / default如果它返回输出(如示例所示),则可以取消设置DOCKER环境变量。
  2. 使用两种方法之一在当前shell中取消设置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.
 
  1. 现在,在运行上述任一命令之后,该命令将不返回任何输出。$ 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.plistunder 的文件~/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主机
  • 了解机器概念
  • Docker机器所有支持的驱动程序的参考页列表
  • 适用于Oracle VirtualBox的Docker机器驱动程序
  • 适用于Microsoft Hyper-V的Docker机器驱动程序
  • docker-machine 命令行参考

码头工,机器,virtualbox,本地

机器 | Machine相关

1.亚马逊网络服务(机器) | Amazon Web Services (Machine)
2.数字海洋(机器) | Digital Ocean (Machine)
3.docker机器活动 | docker-machine active
4.docker机器配置 | docker-machine config
5.docker机器创建 | docker-machine create
6.docker-machine env
7.docker机器助手 | docker-machine help
8.docker机器检查 | docker-machine inspect
9.docker-machine ip
10.docker-machine kill
11.docker-machine ls
12.docker机器规定 | docker-machine provision
13.docker机器再生 | docker-machine regenerate-certs
14.docker机器重启 | docker-machine restart
15.docker-machine rm
16.docker-machine scp
17.docker-machine ssh
18.docker-machine start
19.docker-machine status
20.docker-machine stop
21.docker-machine upgrade
22.docker-machine url
23.驱动程序选项和操作系统默认值 | Driver options and operating system defaults (Machine)
24.驱动总览 | Drivers overview (Machine)
25.Exoscale (Machine)
26.通用 | Generic (Machine)
27.谷歌电脑引擎 | Google Compute Engine (Machine)
28.IBM Softlayer (Machine)
29.安装机器 | Install Machine
30.机器 | Machine
31.机器CLI概述 | Machine CLI overview
32.机器命令行完成 | Machine command-line completion
33.机器概念和帮助 | Machine concepts and help
34.机器总览 | Machine overview
35.Microsoft Azure (Machine)
36.Microsoft Hyper-V (Machine)
37.从Boot2Docker迁移到Machine | Migrate from Boot2Docker to Machine
38.OpenStack (Machine)
39.Oracle VirtualBox (Machine)
40.配置AWS EC2实例(机器) | Provision AWS EC2 instances (Machine)
41.提供数字海洋 | Provision Digital Ocean Droplets (Machine)
42.在云中配置主机 | Provision hosts in the cloud (Machine)
43.Rackspace (Machine)
44.VMware Fusion (Machine)
45.VMware vCloud Air (Machine)
46.VMware vSphere (Machine)
Docker 17

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主页 https://docker.com/
源码 https://github.com/docker/docker
版本 17
发布版本 17.06