Docker for Windows 使用 VMware Workstation
前言
Docker for Windows 不同于 Docker Toolbox。Docker 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 | { |
保存,重启即可
容器之内网独立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,并且将其设为手动启动,避免每次开机就收到一个提示框。