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 -v
NAME STATE VERSION
* docker-desktop Stopped 2
docker-desktop-data Stopped 2
C:\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 -v
NAME 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 2
C:\Users\XXXXXXX>wsl --list -v
NAME STATE VERSION
* docker-desktop Stopped 2
docker-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 --shutdown
C:\Users\XXXXXXX>wsl --list -v
NAME STATE VERSION
* docker-desktop Stopped 2
docker-desktop-data Stopped 2
确认分发docker-desktop-data已经处于停止状态。
3.3 压缩.vhdx文件
执行diskpart,打开 DiskPart 的命令窗口:
C:\Users\XXXXXXX>wsl --list -v
NAME STATE VERSION
* docker-desktop Stopped 2
docker-desktop-data Stopped 2
C:\Users\XXXXXXX>wsl --shutdown
C:\Users\XXXXXXX>diskpart
在新打开的 DiskPart 命令窗口中,执行select vdisk file="D:\docker-desktop-data\ext4.vhdx"选中分发docker-desktop-data对应存储,执行compact vdisk压缩:
Microsoft DiskPart 版本 10.0.19041.3636
Copyright (C) Microsoft Corporation.
在计算机上: LAP210845
DISKPART> select vdisk file="D:\docker-desktop-data\ext4.vhdx"
DiskPart 已成功选择虚拟磁盘文件。
DISKPART> compact vdisk
100 百分比已完成
DiskPart 已成功压缩虚拟磁盘文件。
DISKPART>
压缩完毕后,空间得到释放,截图如下: