迁移docker wsl2 VHDX 文件的方法(转发)

摘要:
原文:移植dockerwsl2VHDX文件的方法与使用Windows子系统Linux的任何人的方法相同。当WSL2最终发布时,我们非常兴奋。使用WSL2,映像/容器存储在虚拟机的VHDX映像中。这将导致VHDX文件开始失控,如果主启动驱动器空间不足,则会出现问题。以下是PowerShell脚本dodoit:$ErrorActionPreference=“Stop”$newLocation=“E:VM WSL2”cd~AppData本地Docker wsl datawsl--shutdown为VHD计时。ext4.vhdx ModeFullmkdir$newLocation-Forcemvext4.vhdx$newLocationscd..RmdataNew Item ItemTypeSymbolicLink Path“data”-Target$newLocation只要$newLocation参数被更改,它就会将vhdx文件移动到新位置。注意:如果您运行的是没有WSL/WSL2的Docker for Windows,这些步骤可能适用于DockerDesktop。vhdx文件…但是,在这种情况下,您可能只需要更改Hyper-V VM实例中的vhdx位置。

原文:迁移docker wsl2 VHDX 文件的方法

像任何使用Windows子系统Linux的人一样,我们都很兴奋在WSL2最终发布时。

使用WSL2,映像/容器存储在虚拟机的VHDX映像中

清除映像/容器时,VHDX中的空间将被释放,但决不会释放回主机操作系统。这会导致VHDX文件开始失控,如果主引导驱动器空间不足,则会出现问题。

这是一个已知的问题,这个GitHub问题有一个缩小映像的解决方法(下面列出了其中的一些步骤)。

要解决这个问题,可以将VHDX移动到不同的驱动器/分区。下面是一个PowerShell脚本do do it(使用风险自负):

$ErrorActionPreference = "Stop"

$newLocation = "E:\VMs\WSL2\"

cd ~\AppData\Local\Docker\wsl\data
wsl --shutdown
Optimize-VHD .\ext4.vhdx -Mode Full
mkdir $newLocation -Force
mv ext4.vhdx $newLocation
cd ..
rm data
New-Item -ItemType SymbolicLink -Path "data" -Target $newLocation

  

只要更改$newLocation参数,它就会将VHDX文件移动到新位置。如果您使用的是windows10home,那么可以将此解决方法用于optimizevhd命令。这将停止WSL,优化VHD(将VHDX中未分配的空间释放回主机操作系统),将VHDX移动到新位置,并用指向新位置的符号链接替换“data”文件夹。

我做了有限的测试,一切似乎都按预期进行。如果你遇到问题,请在评论中告诉我!

注意:如果您运行的是不带WSL/WSL2的Docker for Windows,那么这些步骤可能适用于DockerDesktop.vhdx文件…但是在这种情况下,您可能只需要更改Hyper-V VM实例中的VHDX位置。
————————————————
版权声明:本文为CSDN博主「Robert的书签」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zengjianze/article/details/114434433

 

免责声明:文章转载自《迁移docker wsl2 VHDX 文件的方法(转发)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#连接Oracle数据库的方法(Oracle.DataAccess.Client也叫ODP.net)逆向安全基础之IDA使用简介下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker 安装 activemq

1、先下载镜像信息到本地服务器。 这里不加版本号,那么安装的就是最新版本。 docker pull docker.io/webcenter/activemq 2、检查下镜像情况 docker images 3、安装activemq 映射端口与之前原来的一致 // 安装这里可以是镜像名称加版本号,也可以是镜像IDdocker run -d --name...

教你使用docker部署淘宝rap2服务

什么是rap2 先来说说起因,在上一个星期的分享会上,谈到前后端联调上,有同事提到了rap2,特意去了解了一下,觉得使用这个东西来进行前后端的接口联调来真是太方便了,对比我们之前公司内部开发的API Cloud来说,我更偏向使用rap2。 RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据、校验真实接口的正确...

docker运行mysql容器自动停止的问题解救方案如下

在docker中启动的mysql容器会自动停止是因为mysql使用的内存过多; 解决方法如下: 1、先卸载之前的mysql容器,如下: docker ps -a #获取docker中的所有容器   通过docker rm cbb412415aab进行卸载删除 2、重新运行mysql容器: docker run -it -m 300M --memo...

harbor 安装与部署

harbor 安装与部署 1. harbor服务器安装docker和docker compose 1.1 安装docker 1.1.1 安装docker依赖包 [root@harbor ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 1.1.2 安装docker镜像源...

配置定时任务清理多余的镜像和容器文件

k8s集群运行久了,难免会产生大量无用的镜像和容器文件,因此需要经常进行清理。 一般而言,docker容器默认的本地数据存储路径位于/var/lib/docker路径下,通过df -h /var/lib/docker命令,可以查看其占用情况。如果高于80%,则意味着需要清理了。 一、清理命令 与清理容器多余数据相关的命令有两条,分别是: docker im...

.Net Core 商城微服务项目系列(十三):搭建Log4net+ELK+Kafka日志框架

之前是使用NLog直接将日志发送到了ELK,本篇将会使用Docker搭建ELK和kafka,同时替换NLog为Log4net。 一.搭建kafka 1.拉取镜像 //下载zookeeper docker pull wurstmeister/zookeeper //下载kafka docker pull wurstmeister/kafka:2.11-...