1.docker pull报错,无法连接https://registry-1.docker.io/v2/
报错信息如下:
Error response from daemon:
Get "https://registry-1.docker.io/v2/":
net/http: request canceled while waiting for connection(Client.Timeout exceeded while awaiting headers)
解决办法是在Docker Desktop设置代理:
{"registry-mirrors": ["https://docker.1ms.run","https://docker.1panel.live/"],"insecure-registries": [],"debug": false,"experimental": false,"features": {"buildkit": true},"builder": {"gc": {"enabled": true,"defaultKeepStorage": "120GB"}}
}
2.C盘被下载的docker镜像占满
windows10上安装了Docker Desktop 3.6,选择安装了WSL2,下载过程中出现C盘被占满的问题。WSL2本质上是虚拟机, Windows 会自动创建 vhdx 后缀的虚拟磁盘文件作为存储,用户新下载的镜像都在默认的虚拟机文件“C:\Users\<当前登录用户名>\AppData\Local\Docker\wsl\ext4.vhdx”中管理,所以C盘会被撑爆。解决思路如下:
2.1.关闭Docker Desktop
打开window 命令窗口,执行:
C:\Users\XXXXXXX>wsl --shutdown
2.2.查看默认分发、导出默认分发docker-desktop-data、注销默认分发docker-desktop-data
分发docker-desktop-data上主要存储新下载的docker镜像
C:\Users\XXXXXXX>wsl --list -vNAME STATE VERSION
* docker-desktop Stopped 2docker-desktop-data Stopped 2C:\Users\XXXXXXX>wsl --export docker-desktop-data "D:\\docker-desktop-data\\docker-desktop-data.tar"C:\Users\XXXXXXX>wsl --unregister docker-desktop-data
正在注销...C:\Users\XXXXXXX>wsl --list -vNAME STATE VERSION
* docker-desktop Stopped 2
2.3.重新注册分发docker-desktop-data,更改其存储位置为目录"D:\\docker-desktop-data"
C:\Users\XXXXXXX>wsl --import docker-desktop-data "D:\\docker-desktop-data" "D:\\docker-desktop-data\\docker-desktop-data.tar" --version 2C:\Users\XXXXXXX>wsl --list -vNAME STATE VERSION
* docker-desktop Stopped 2docker-desktop-data Stopped 2
执行完毕后,在目录D:\docker-desktop-data下看到ext4.vhdx说明更改成功,后期新下载的docker镜像都在这里维护。
3.docker镜像删后ext4.vhdx空间不释放
Docker Desktop随着镜像下载的越来越多,原来的分发docker-desktop-data上镜像占据的磁盘空间越来越大,执行了“docker rmi imageId”和“docker image prune -a”后,仍然发现分发docker-desktop-data对应的磁盘文件“D:\docker-desktop-data\ext4.vhdx”文件不释放,D盘截图如下:
根本原因:WSL2 本质上是虚拟机,所以 Windows 会自动创建 vhdx 后缀的虚拟磁盘文件作为存储。这个 vhdx 后缀的虚拟磁盘文件特点是可以自动扩容,但是一般不会自动缩容。所以删除文件后还需要我们手动进行压缩才能释放磁盘空间。
3.1 确认自己分发docker-desktop-data文件所在位置
这里在问题2中,我已经将默认的存储位置从“C:\Users\<当前登录用户名>\AppData\Local\Docker\wsl\ext4.vhdx”变更为“D:\docker-desktop-data\ext4.vhdx”
3.2 关闭Docker Desktop
打开window 命令窗口,执行:
C:\Users\XXXXXXX>wsl --shutdownC:\Users\XXXXXXX>wsl --list -vNAME STATE VERSION
* docker-desktop Stopped 2docker-desktop-data Stopped 2
确认分发docker-desktop-data已经处于停止状态。
3.3 压缩.vhdx文件
执行diskpart,打开 DiskPart 的命令窗口:
C:\Users\XXXXXXX>wsl --list -vNAME STATE VERSION
* docker-desktop Stopped 2docker-desktop-data Stopped 2C:\Users\XXXXXXX>wsl --shutdownC:\Users\XXXXXXX>diskpart
在新打开的 DiskPart 命令窗口中,执行select vdisk file="D:\docker-desktop-data\ext4.vhdx"选中分发docker-desktop-data对应存储,执行compact vdisk压缩:
Microsoft DiskPart 版本 10.0.19041.3636Copyright (C) Microsoft Corporation.
在计算机上: LAP210845DISKPART> select vdisk file="D:\docker-desktop-data\ext4.vhdx"DiskPart 已成功选择虚拟磁盘文件。DISKPART> compact vdisk100 百分比已完成DiskPart 已成功压缩虚拟磁盘文件。DISKPART>
压缩完毕后,空间得到释放,截图如下: