一、支持直接安装 Docker for Windows 的

Important Notes:
Docker for Windows requires 64bit Windows 10 Pro, Enterprise and Education (1511 November update, Build 10586 or later) 
and Microsoft Hyper-V. Please see What to know before you install for a full list of prerequisites.

如果是 64位 Windows 10 Pro/Enterprise/Education,并且带有 Microsoft Hyper-V,则可以直接安装 Docker for Windows。官方文档: Install Docker for Windows

二、不支持的,安装 Docker Toolbox

如果我们的机器不是 64位 Windows 10 Pro/Enterprise/Education,那么就需要额外做一些工作:安装 docker Toolbox

2.1、什么是 Docker Toolbox

Legacy desktop solution. Docker Toolbox is for older Mac and Windows systems that do not meet 
the requirements of Docker for Mac and Docker for Windows. We recommend updating to the newer applications, if possible.

Docker Toolbox 是作为不满足 Docker 安装要求的旧 Mac 系统/旧 Windows 系统的一种解决方案。

2.2、What’s in the box

Docker Toolbox 里面包含啥?:

  1. Docker Machine for running docker-machine commands
  2. Docker Engine for running the docker commands
  3. Docker Compose for running the docker-compose commands
  4. Kitematic, the Docker GUI
  5. a shell preconfigured for a Docker command-line environment
  6. Oracle VirtualBox

翻译:

  1. Docker Machine。用于运行 docker-machine commands
  2. Docker Engine。用于运行行 docker commands
  3. Docker Compose。用于运行 docker-compose commands
  4. Kitematic,一个 Docker GUI,即一个 Docker 图形用户界面
  5. 一个预配置好了 Docker command-line environment 的 shell
  6. Oracle VirtualBox 虚拟机

三、Install Docker Toolbox on Windows

Mac 系统的自己另外在看文档了,这里直说 Windows 下安装 Docker Toolbox:Install Docker Toolbox on Windows

先下载 Docker Toolbox for Windows 安装包。

3.1、What you get and how it works

你会下载到啥?它是怎么工作的?:

  1. Docker CLI client for running Docker Engine to create images and containers
  2. Docker Machine so you can run Docker Engine commands from Windows terminals
  3. Docker Compose for running the docker-compose command
  4. Kitematic, the Docker GUI
  5. the Docker QuickStart shell preconfigured for a Docker command-line environment
  6. Oracle VM VirtualBox
Because the Docker Engine daemon uses Linux-specific kernel features, you can’t run Docker Engine natively on Windows. 
Instead, you must use the Docker Machine command, docker-machine, to create and attach to a small Linux VM on your 
machine. This VM hosts Docker Engine for you on your Windows system.

翻译:

  1. Docker CLI client。用于运行 Docker Engine 来创建 images and containers
  2. Docker Machine。基于它,可以在 Windows 终端上运行 Docker Engine commands
  3. Docker Compose。用于运行 docker-compose command
  4. Kitematic。一个 Docker GUI,即一个 Docker 图形用户界面
  5. Docker QuickStart shell。一个预配置好了 Docker command-line environment shell
  6. Oracle VM VirtualBox 虚拟机
因为 Docker Engine 的守护进程依赖于 特定的 Linux 内核特性,所以你不能在 Windows 本地直接运行 Docker Engine。
因此,必须使用 Docker Machine command、docker-machine 来创建和连接到一个本地机器上的 small Linux VM。
这个 Linux VM 在你的 Windows 系统上为你运行着 Docker Engine。

3.2、安装条件检查

  1. 检查 Windows 系统是否是 Windows 7 及更高版本。如果满足本文章节一的,则建议直接安装 Docker for Windows。
  2. 确定 Windows 系统支持 Hardware Virtualization Technology 并已启用。(查看方法:Ctrl+Alt+Delete 打开任务管理器 –> 选择性能选项卡即可看到虚拟化的状态,在虚拟化后面跟的是已启用则表示已正常开启,否则未开启。)
  3. 检查 Windows 系统的位数,必须是 64位的系统。

3.3、安装步骤

官网的安装步骤说明:Step 2: Install Docker Toolbox

Docker Toolbox 安装器会在你电脑上安装几个 辅助程序 ,它们是:

  1. Docker Client for Windows
  2. Docker Toolbox management tool and ISO
  3. Oracle VM VirtualBox
  4. Git MSYS-git UNIX tools

警告: 如果你 Windows 已经之前安装了 VirtualBox,那么就不需要重复安装了,当提示的时候,不要选择安装该项。如果当前你的 VirtualBox 在运行着,请先关闭再运行此安装程序。

注意: 上面提到,Docker Toolbox 安装器会安装 Git MSYS-git UNIX tools,我的 Windows 已经安装了 Git,我就没勾选安装 MSYS-git 了,这应该是正确的做法。Github 上有人提过相关的 issue

但是,没勾选安装 MSYS-git 的话,安装完之后,双击 Docker Quickstart Terminal 快捷方式运行,会出现 “windows 正在查找 bash.exe…”,这是正常的,因为右键->属性查看该快捷方式,可以发现其默认查找 bash.exe 的路径是 C:\Program Files\Git\bin\bash.exe,找不到的话 Windows 自动会帮我们找 bash.exe 的位置。找到后点击确定修复就可以了。终极解决方案,还是要参照项目 Github 上的 issue:Docker Quick Start Terminal” shortcut, an error occurs,里面有人给出了方案(就是右键快捷方式->属性,修改指定的 bash.exe 位置即可)。

具体安装的截图过程和详情,看本章节 3.3 给出的官方文档。

3.4 检查安装结果

双击 Docker Quickstart Terminal 启动终端。它会做一些事情来初始化 Docker Toolbox。

当初始化完成之后,中断就会显示 $ 提示。

这个终端是一个特殊的 bash 环境,而不是标准的 Windows 命令行工具。这个 bash 是 Docker 所必须的。

输入 docker run hello-worlds 如果一切正常的话,此命令会有类似于以下的输出:

$ docker run hello-world
time="2017-03-16T02:12:02+08:00" level=info msg="Unable to use system certificat
e pool: crypto/x509: system root pool is not available on Windows"
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
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.
 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://cloud.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

3.5 常见错误

3.5.1 looks like something went wrong in step ‘looking for vboxmanage.exe’

双击 Docker Quickstart Terminal 启动终端时,出现错误提示:

looks like something went wrong in step ‘looking for vboxmanage.exe’

Docker 找不到 vboxmanage.exe,查看 Docker 安装目录下的 start.sh,发现以下代码片段:

STEP="Looking for vboxmanage.exe"
if [ ! -z "$VBOX_MSI_INSTALL_PATH" ]; then
  VBOXMANAGE="${VBOX_MSI_INSTALL_PATH}VBoxManage.exe"
else
  VBOXMANAGE="${VBOX_INSTALL_PATH}VBoxManage.exe"
fi

此脚本是使用 VBOX_MSI_INSTALL_PATH 和 VBOX_INSTALL_PATH 这两个环境变量来定位 VBoxManage.exe 的,查看一下自己的环境变量,是否存在(有其中一个即可)。

我的设置了,但是设置的是 D:\VirtualBox,对比以上代码不难发现问题所在,改为 D:\VirtualBox\ 就好了!

参考:Docker: Looks something went wrong in step Looking for vboxmanage.exe,其中有个回答是博主回答的,大家多多支持 ):

3.5.2 启动 Docker Quickstart Terminal 卡住然后失败

终端会显示类似于以下的错误提示信息:

Running pre-create checks...
(default) No default Boot2Docker ISO found locally, downloading the latest relea
se...
(default) Latest release for github.com/boot2docker/boot2docker is v17.03.0-ce
(default) Downloading C:\Users\kinginblue\.docker\machine\cache\boot2docker.iso
from https://github.com/boot2docker/boot2docker/releases/download/v17.03.0-ce/bo
ot2docker.iso...
(default) 0%Error removing file: Error removing temporary download file: remove
C:\Users\kinginblue\.docker\machine\cache\boot2docker.iso.tmp435808687: The proc
ess cannot access the file because it is being used by another process.
(default)
Error with pre-create check: "read tcp 192.168.1.118:55083->52.216.64.216:443: w
sarecv: An existing connection was forcibly closed by the remote host."
Looks like something went wrong in step ´Checking if machine default exists´...
Press any key to continue...

这是因为,启动时如果检测到没有 Boot2Docker,就会去下载,这个下载过程出现网络连接上的错误了,导致启动失败。

上面的错误提示信息已经很明显了:

  • 先删除下载失败的临时文件。(我的是:C:\Users\kinginblue\.docker\machine\cache\boot2docker.iso.tmp435808687)
  • 自己用其他工具去下载对应的 boot2docker.iso 文件(我的是:https://github.com/boot2docker/boot2docker/releases/download/v17.03.0-ce/boot2docker.iso)
  • 然后放置到对应的目录(我的是:C:\Users\kinginblue\.docker\machine\cache\boot2docker.iso)就可以了。

via.http://blog.csdn.net/kinginblue/article/details/62421134