在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实例进行恢复
答案 0 :(得分:6)
当然,这是我的经验分享。
run
语法首先,您需要记住或重建语法以启动容器,以便稍后重新运行它们。想法是从现有容器中收集尽可能多的信息以重新运行它们
##迁移卷
介于易执行性和长时间运行的任务之间。容易,因为只用了一个容器,又麻烦又麻烦,因为它需要多个命令
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脚本