Win10系统基于WSL2安装Docker问题小结

Updated on with 1,830 views

迁移到其它盘符

Windows Docker Desktop默认安装到 C:\Program Files\docker目录。如果c盘空间不够,可以使用mklink命令,将其他盘的文件夹的快捷方式映射到c盘的固定目录,这样就可以将Docker Desktop安装到其他目录,节约宝贵的c盘空间。

命令如下:

mklink /j "C:\Program Files\Docker" "D:\Program Files\Docker"
如果提示“当文件已存在时,无法创建该文件”。
那是因为Docker目录已经存在,删除c盘的相应目录后,执行成功。

Docker Desktop启动失败

Docker.ApiServices.WSL2.WslKernelUpdateNotInstalledException: 引发类型为“Docker.ApiServices.WSL2.WslKernelUpdateNotInstalledException”的异常。
在 Docker.ApiServices.WSL2.WslShortLivedCommandResult.LogAndThrowIfUnexpectedExitCode(String prefix, ILogger log, Int32 expectedExitCode) 位置 C:\workspaces\PR-16070\src\github.com\docker\pinata\win\src\Docker.ApiServices\WSL2\WslCommand.cs:行号 140
在 Docker.Engines.WSL2.WSL2Provisioning.<DeployDistroAsync>d__17.MoveNext() 位置 C:\workspaces\PR-16070\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\WSL2Provisioning.cs:行号 169
--- 引发异常的上一位置中堆栈跟踪的末尾 ---

查了资料,错误是因为WSL2与Proxifier无法同时使用。
方案来源:Winsock module breaks WSL2 · Issue #4177 · microsoft/WSL · GitHub
下载nolsp解决,运行命令如下:

nolsp.exe C:\WINDOWS\system32\wsl.exe

重启docker desktop正常

测试下,已经安装成功。

相关软件特别是nolsp不好直接下载,

链接:https://pan.baidu.com/s/19q8pN5BIb879aCNV_7eqrg
提取码:j41p

Docker的设置

  1. 替换为国内源:

    https://registry.docker-cn.com # Docker中国区官方镜像

    http://hub-mirror.c.163.com # 网易

    https://docker.mirrors.ustc.edu.cn # ustc

    https://docker.mirrors.ustc.edu.cn # 中国科技大学

    https://cr.console.aliyun.com/ # 阿里云容器 服务

  2. wls位置迁移
    WSL 发行版默认都是安装在 C 盘,在%LOCALAPPDATA%/Docker/wsl 目录 docker 的运行数据、镜像 文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx 中

wsl --terminate <DistritubtionName>  # 先关闭相关的分发,以免后续造成不必要的问题
wsl --export <DistributionName> <FileName>  # 导出Linux子系统
wsl --unregister Ubuntu-18.04  # 注销这个分发
wsl --import <DistributionName> <InstallLocation> <FileName>  # 导入/还原之前的分发版本
  1. 首先关闭 docker

  2. 关闭所有发行版:wsl --shutdown

  3. 将 docker-desktop-data 导出指定目录 D:\WslData
    wsl --export docker-desktop-data D:\WslData\docker-desktop-data.tar

  4. 注销 docker-desktop-data
    wsl --unregister docker-desktop-data

  5. 重新导入 docker-desktop-data 到要存放的文件夹
    wsl --import docker-desktop-data d:\wsldata\ d:\wsldata\docker-desktop-data.tar --version 2

    完成以上操作后,原来的%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx 就迁移到新目录了

Responses
取消