前言

Docker for Windows 不同于 Docker ToolboxDocker for Windows 对系统的要求至少为Windows 10 专业版,因为它需要Hyper-V的支持,而Dockbox Toolbox使用Oracle Virtual Box而不是Hyper-V。使用过VMware WorkStation的朋友应该知道,vm无法与hyper-v共存。那么如果我的电脑已经安装和使用VM,如何才能使用Docker for Windows呢,请看下面的讲解。

工作环境

  • 操作系统:Window 10 企业版 LTSC
  • VMWare:VMware® Workstation 14 Pro

安装Docker for Windows

从这个地址下载并进行安装:下载地址

安装过程很简单,在此我就不赘述了。

安装以后的准备

安装完成以后,Docker for Windows 会自动运行,此时会出现提示没有启用Hyper-V,这里点击canel即可。

准备工作

下载boot2docker.iso

从这个地址下载: 下载地址

然后将 boot2docker.iso 放在 C:\Users<用户名>.docker\machine\cache\,文件夹不存在就自己建立。

下载 VMware Workstation 驱动

从这里下载 下载地址 最新版的vm驱动。此驱动非官方开发,但是也在官方的文档中有链接。

然后将 docker-machine-driver-vmwareworkstation.exe 复制到 C:\Program Files\Docker\Docker\resources\bin 下:

安装Docker Machine

打开VMware Workstation

这一步是必须的!VM版本必须大于10。

安装dev示例

打开cmd,执行命令

docker-machine create --driver=vmwareworkstation dev

验证安装,执行命令

docker-machine ls

激活实例

执行命令:

docker-machine env dev

会出现如下图:

设置环境变量

打开环境变量设置,对于上步中的提示设置系统环境变量:

验证是否安装成功

使用命令登录

docker-machine ssh dev

出现如下图表示安装成功

配置加速器

通过命令登录docker-machine

新建文件 vi /etc/docker/daemon.json

输入以下内容

1
2
3
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

保存,重启即可

容器之内网独立IP访问

通过执行命令docker-machine ls找到docker容器宿主机的ip地址192.168.17.130

进入某个Docker容器,执行命令cat /etc/hosts查看容器ip地址172.17.0.3

在物理机上以管理员原打开命令行,执行命令route -p add 172.17.0.0 mask 255.255.255.0 192.168.17.130,通过route print 172.17.0.0查看,效果如图

表示网段 172.17.0.0 的网段都经过 192.168.17.130 这个网关做路由,实现容器之内网独立IP访问。

mongo 容器为例:

收尾工作

因为我们使用的VM,所以我们在使用docker的时候,必须保证vm的dev示例是在运行的。

配置dev开机后天启动

新建一个 **docker_dev_run.bat **的文件,然后用编辑器打开,写下"C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" start "C:\Users\Xiodra\.docker\machine\machines\dev\dev.vmx" nogui这行开启脚本。

注:start前面部分是你VMware的安装路径,后面到nogui部分是你Linux系统文件路径。

然后,我们再建一个 docker_dev_stop.bat 的文件,写下 "C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" stop "C:\Users\Xiodra\.docker\machine\machines\dev\dev.vmx" soft 脚本,路径和刚才的一样。

接下来,我们就可以往Windows的 脚本(登录/注销) 添加了,运行 > gpedit.msc > 用户配置 > windows设置 > 脚本(登录/注销)

此方法目前有个缺点,就是无法使用Docker for Windows的UI管理功能,但是这并不影响,通过命令我们可以完成所有的事情,所以我们在服务中,停止Docker Desktop Service,并且将其设为手动启动,避免每次开机就收到一个提示框。