我在使用非常大的docker buildx
缓存时遇到了这个问题,而且我不想修剪所有缓存,因为过滤器参数目前已损坏。
PS> docker run -it --rm ubuntu:18.04 df -h
Filesystem Size Used Avail Use% Mounted on
overlay 252G 249G 0G 100% /
tmpfs 64M 0 64M 0% /dev
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
/dev/sdd 252G 249G 0G 100% /etc/hosts < this is the device we have to expand
请注意哪个设备已满。这是您稍后必须调整大小的磁盘。
使用diskpart
扩展虚拟磁盘
在WSL2
下,按照Microsoft关于扩展vdisk大小的说明,这应该允许您扩展数据/缓存挂载点。
如果您像我一样将Docker vhdx
从AppData/Packages
移动,并且它未在Docker Desktop GUI中列出,则可以在设置中找到它:
PS> cat $env:APPDATA\Docker\settings.json | Select-String dataFolder
"dataFolder": "D:\\DockerDesktop",
在 wsl/data
目录下找到 ext4.vhdx
文件(不是 DockerDesktop.vhdx
!),使用 diskpart
扩展磁盘。
DISKPART> select vdisk file="D:\DockerDesktop\wsl\data\ext4.vhdx"
DiskPart successfully selected the virtual disk file.
DISKPART> detail vdisk
Device type ID: 0 (Unknown)
Vendor ID: {00000000-0000-0000-0000-000000000000} (Unknown)
State: Added
Virtual size: 256 GB
Physical size: 252 GB
Filename: D:\DockerDesktop\wsl\data\ext4.vhdx
Is Child: No
Parent Filename:
Associated disk
要扩展到512 GB,请输入以MB为单位的大小(512000),然后退出diskpart。
DISKPART> expand vdisk maximum=512000
DISKPART> exit
在WSL中扩展磁盘空间
为了允许Docker使用额外的空间,请启动您的WSL2分发版。这并不需要使用docker来完成(这是我个人最初感到有些困惑的地方)。
PS> wsl
user@WSL2:/mnt/c/Users/user$ sudo mount -t devtmpfs none /dev
user@WSL2:/mnt/c/Users/user$ mount | grep ext4
/dev/sdb on / type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered)
/dev/sdd on /mnt/wsl/docker-desktop-data/isocache type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered)
isocache
现在在 /dev/sdd
上(与之前整个磁盘匹配)。使用新的大小类型后缀运行 resize2fs
命令进行调整。
sudo resize2fs /dev/<DEVICE> 512000M
请检查您是否有更多的空间!
docker run -it --rm ubuntu:18.04 df -h
Filesystem Size Used Avail Use% Mounted on
overlay 492G 249G 220G 54% /
tmpfs 64M 0 64M 0% /dev
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
/dev/sdd 492G 249G 220G 54% /etc/hosts