将现有容器从Hyper-V迁移到WSL2技术

时间:2020-06-01 11:44:27

标签: docker docker-desktop

在DockerCon 2020之后,我热情地下载了Windows 10 2004,并尝试将Docker Desktop升级到WSL 2容器并进行了实验。

我有几个容器,尤其是几个数据库及其存储在卷中的数据。如果是Postgres和MS SQL Server。

我不想丢失数据,尽管它并不重要。我反复使用Docker卷而不是OS挂载,因为我反复发现不建议将Windows挂载用于数据库数据存储。

当我第一次启用WSL-2时,我所有的容器和卷都消失了。

我想问一下是否有(推荐的)过程或工具将基于Hyper-V的容器及其数据迁移到WSL-2。

可以轻松地重新下载图像。容器设置和向WSL-2的数据迁移如何?

我当然可以可以手动进行。我可以使用busybox将卷转储到本地驱动器(作为tar),并使用另一个busybox实例进行恢复

1 个答案:

答案 0 :(得分:6)

当然,这是我的经验分享。

重构docker run语法

首先,您需要记住或重建语法以启动容器,以便稍后重新运行它们。想法是从现有容器中收集尽可能多的信息以重新运行它们

starting point

##迁移卷

介于易执行性和长时间运行的任务之间。容易,因为只用了一个容器,又麻烦又麻烦,因为它需要多个命令

docker run `
           --rm ` #Dispose after use
           -v G:\Docker:/volumes ` # Mount my Windows drive so that the file will appear in Explorer
           - v src_mount:/src ` # e.g. mssql2017:/mssql2017 mounts mssql2017 named volume to Busybox
           busybox `
           tar -zcvf /volumes/backup_name.tar.gz /src

冲洗并重复您感兴趣的所有命名卷。我只有一堆

转储您无法/不愿重建的图像

就我而言,Oracle 12c / 19c已构建但从未推出。构建Oracle很麻烦,因为您必须在下载其许可的ZIP文件后构建容器

明智地使用docker save -o。例子

docker save oracledb:12.0.0.0c -o oracledb.img

##还原图像

切换到WSL-2后,明智地使用docker load

还原卷

使用docker volume create手动重新创建所有卷,并使用busybox解压缩。这有点相反

docker run `
       --rm ` #Dispose after use
       -v G:\Docker:/volumes ` # Mount my Windows drive so that the file will appear in Explorer
       - v dest_mount:/dest ` # e.g. mssql2017:/mssql2017 mounts mssql2017 named volume to Busybox
       busybox `
       tar -zxvf /volumes/backup_name.tar.gz /dest

还原容器

现在您有了源Docker命令行-s,启动它们以重新创建容器。

结论:我正在考虑制作可重用的Powershell脚本

相关问题