docker for windows 安装踩坑合集


下面的是直接用docker toolbox 装的, 不管怎么样都还是一堆问题, 最终改用wsl

wsl的坑点在于, 需要将其升级为wsl2, 这个百度有很多博文教程. 同时需要将
Hyper-V打开, 以及bcdedit 的 hypervisorlaunchtype模式要为auto


首先说下我一开始的安装方法

  1. 先是独自安装了docker, 程序和功能中打开了hyper-v
  2. 然后测试下, dockerdocker-compose的version命令都没有问题, 它会自动给你注册到path全局环境变量, 但是没有docker-machine, 又单独去github找了安装包安装了
  3. 然后又发现docker ps命令不行, 报
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.39/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.

然后查了下博客, 说要.\DockerCli.exe -SwitchDaemon 无效, 又查了下, 说要docker-machine env default, 又报错:

Error: No machine name(s) specified and no "default" machine exists.

好嘛, 又来一个新问题, 说default的机器不存在.

  1. 为了解决这个default机器问题, 又查了下, 说要docker-machine create default去创建1个. 于是, 又有新问题:
Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"

我这快吐了, vbox不会是我想的那个vbox吧, 曾经装过, 感觉不如vm好用. 结果一查还真是, 还得下个虚拟机? 这个时候我就感觉这条路走不通了, 俄罗斯套娃式的错误.

  1. 于是我去找了下另外一个软件, docker toolbox, 安装发现原来它是个套件式的, 可以配齐上面说的docker-machinevbox, 因为我已经装了docker-machine所以只装上vbox. 再测试docker ps 命令, 还是报错:
Error response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file specified.

查来查去还是上面的几个重启命令反反复复. 比如Net stop com.docker.serviceNet start com.docker.service

  1. 在反反复复折腾了下午2个小时后, 我决定全部卸载, 只靠docker toolbox安装
  2. 安装好了后, 启动, 发现已经安装好了docker-machinevbox, 打开Docker Quickstart Terminal, 它会自动给你创建default机器. 然后又报错:
error: Raw-mode is unavailable courtesy of Hyper-V

但是总算不是之前的错误信息了. 按博客说的, 原来hyper-v不需要打开.

管理员身份打开后,输入bcdedit, 如果最后一行hypervisorlaunchtype是auto, 改成off .bcdedit /set hypervisorlaunchtype off

重启, 再打开Docker Quickstart Terminal等他命令跑完, 然后docker ps, ok正常了

总结

  1. 使用 docker toolbox安装
  2. 不需要打开hyper-v -> 会导致docker desktop不能用
  3. 所有操作用管理员身份打开命令窗口
  4. 不行就试试重启服务
  5. docker命令没反应就打开Docker Quickstart Terminal启动虚拟机

第二天我因为需要改配置, 又装了docker desktop, 结果打开报错

Hardware assisted virtualization and data execution protection must be enabled in the BIOS

一看就知道, 是因为昨天关掉了hyper-v, 百度一下就知道docker desktop和vbox不兼容, 互相冲突.

如果非要用这两个, 那在用desktop的时候, 就把上面的两个设置恢复. 即打开hyper-v和 管理员命令行bcdedit /set hypervisorlaunchtype auto ,并重启电脑

这样实在太麻烦. 还有一个办法, 我们可以在C:\User\你的电脑账户名\.docker\文件夹下创建配置文件. 这个文件夹下可以看到machine的一些配置和数据

{
  "registry-mirrors": [
    "https://re-mirror.qiniu.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://dockerhub.azk8s.cn",
    "https://hub-mirror.c.163.com",
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [],
  "debug": false,
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "builder": {
    "gc": {
      "enabled": true,
      "defaultKeepStorage": "20GB"
    }
  }
}

重启, 打开Docker Quickstart Terminal启动虚拟机