在 Hyper-V 上运行 Docker Machine

作者 huhamhire,暂无评论,2016年7月17日 11:27 折腾历程

docker 给 windows 提供的 docker toolbox 是个好东西,可以很方便在 windows 上来操作 docker 相关的一些工作。不过让我比较不爽的一点是,toolbox 自带的 boot2docker 虚拟机是 VirtualBox,跟我工作站上的 Hyper-V 是冲突的,根本没有办法启动。所以我就希望可以把 docker machine 运行在 Hyper-V 上。

docker-cover

为什么我要用 Hyper-V?

  1. Hyper-V 是 Windows 自带的虚拟机
  2. Hyper-V 的动态内存之类的功能比一般非企业级虚拟机的功能好用
  3. 我目前所有虚拟机都运行在 Hyper-V 上(虽然我也比较期待下次可以配一台 KVM 的虚拟机 farm)
  4. 我是 Windows 原教旨主义者,对 Oracle 没啥好感,自然用 Hyper-V

准备工作

在 Windows 环境下使用 docker,首先可以安装 docker toolbox。当然也可以直接自行安装除了 VirtualBox 以外的必要组件。

安装完 docker toolbox 后,直接把 VirtualBox 给卸载掉,这个时候会自动把 VirtualBox 相关的网卡配置给清理掉。

如果没有开启 Hyper-V 的话,当然还需要启用系统自带的 Hyper-V 功能。

创建 docker machine

准备完成之后,来创建 docker machine。需要注意的是,如果不希望把虚拟机安装到 %USERPROFILE%/.docker/machine 路径下的话,建议可以设置 MACHINE_STORAGE_PATH。当然也可以通过命令行传参的方式处理,只是每次调用 docker-machine 的时候都需要单独传参。


SETX MACHINE_STORAGE_PATH "D:/docker/machine"

设置好环境变量以后,就可以来安装虚拟机了。以 power shell 环境为例,可以执行如下的 docker-machine 命令来创建虚拟机。


docker-machine create `
    --driver hyperv `
    --engine-registry-mirror "https://docker.mirrors.ustc.edu.cn" `
    --hyperv-virtual-switch "Hyper-Switch" `
    --hyperv-cpu-count "2" `
    --hyperv-memory "1024" `
    --hyperv-disk-size "20000" `
    docker-vm

可以看到这里指定了虚拟机的驱动为 hyper-v,另外还设置了 docker registry 的镜像地址为中科大提供的国内镜像。CPU、内存、磁盘空间的指定可以比较随意,一是后续可以直接在 Hyper-V 管理器里修改,二是像内存本来就是支持动态调度的。我这里为了便于区分虚拟机,没有将 docker machine 标识为默认的 default,使用默认的好处是之后可以少输入虚拟机名称,其实区别不大。

docker-machine_01

注册 docker-machine 环境

安装完 docker machine 后,虚拟机会自动启动,不过还需要配置相关环境变量。


docker-machine env docker-vm

在 powershell 环境下会提示执行 docker-machine env docker-vm | Invoke-Expression 来注册当前的环境变量参数。不过这里的处理不是永久性的,只对当前的控制台生效。如果有需要的话,可以把相关的参数配置到系统环境变量里。

在设置好环境变量参数之后,就可以通过 docker-machine lsdocker version 来查看 docker 虚拟机运行状态是否正常,并使用 docker 了。

docker-machine_02
关键词:docker , docker machine , Hyper-V
登录后进行评论