Installing Docker Toolbox on Windows with Hyper-V Installed

在安装了Hyper-V的Windows上安装Docker工具箱出现下面错误:
Running pre-create checks…
Error with pre-create check: “Hyper-V is installed. VirtualBox won’t boot a 64bits VM when Hyper-V is activated. If it’s installed but deactivated, you can use --virtualbox-no-vtx-check to try anyways”
Looks like something went wrong in step ´Checking if machine default exists´
在这里插入图片描述
在Windows上安装Docker是一个相当简单和直接的过程。这里有很好的文档。然而,如果你已经安装了Hyper-V像我一样,说明将不会开箱即用。如果你尝试启动Docker Quickstart终端,你会得到以下错误信息:

问题是,当您第一次运行终端时,启动脚本尝试创建默认的虚拟机,docker容器将在其中运行。如果安装了Hyper-V,即使禁用了它,这个步骤也会失败。在我的例子中,我确实安装了它,但是我设置了一个引导选项,在我不使用它时禁用它。本文描述了如何更改Docker启动脚本,使您能够使用启动脚本创建默认虚拟机,同时仍然保持Hyper-V的安装。

在开始安装Docker之前,我建议禁用Hyper-V。如果你不知道怎么做,按照下面的说明去做。一旦您禁用了Hyper-V,第一步是使用Windows安装程序安装Docker。在继续下一步之前,安装应该运行得没有任何问题。

安装Docker之后,我们将修改启动文件,使其能够创建默认VM。我们想修改的文件是位于下D:\Program Files\Docker Toolbox工具箱,叫做叫做start.sh。要修改文件,您必须在以管理员身份运行的编辑器中打开文件。如果不打开升级编辑器,就无法保存更改。
在这里插入图片描述
现在是编辑文件的时候了,但在此之前,您可能需要保存原始文件的副本。以防。在编辑器中,找到以下代码片段:

STEP="Checking if machine $VM exists"
if [ $VM_EXISTS_CODE -eq 1 ]; then
  "${DOCKER_MACHINE}" rm -f "${VM}" &> /dev/null || :
  rm -rf ~/.docker/machine/machines/"${VM}"
  #set proxy variables if they exists
  if [ "${HTTP_PROXY}" ]; then
    PROXY_ENV="$PROXY_ENV --engine-env HTTP_PROXY=$HTTP_PROXY"
  fi
  if [ "${HTTPS_PROXY}" ]; then
    PROXY_ENV="$PROXY_ENV --engine-env HTTPS_PROXY=$HTTPS_PROXY"
  fi
  if [ "${NO_PROXY}" ]; then
    PROXY_ENV="$PROXY_ENV --engine-env NO_PROXY=$NO_PROXY"
  fi
  "${DOCKER_MACHINE}" create -d virtualbox $PROXY_ENV "${VM}"
fi

倒数第二行是创建vm的地方:

"${DOCKER_MACHINE}" create -d virtualbox $PROXY_ENV "${VM}"

需要在这一行中的virtualbox后面加上 --virtualbox-no-vtx-check,修改后如下:

 "${DOCKER_MACHINE}" create -d virtualbox --virtualbox-no-vtx-check $PROXY_ENV "${VM}"

保存您的更改,现在您应该能够运行quickstart终端没有任何问题。

参考文献

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐