将现有容器从 Hyper-V 迁移到 WSL2 技术
Migrating existing containers from Hyper-V to WSL2 technology
在 DockerCon 2020 之后,我热情地下载了 Windows10 2004,并尝试将 DockerDesktop 升级到 WSL 2 容器并进行实验。
我有几个容器,特别是几个数据库 以及它们的数据 存储在卷中。 Postgres 和 MS SQL 案例中的服务器。
我不想丢失数据,尽管它并不重要。我使用 Docker 卷而不是 OS 挂载,因为我反复看到 不 推荐使用 Windows 挂载来存储数据库数据。
当我第一次启用 WSL-2 时,我所有的容器和卷都消失了。
我想问一下是否有任何(推荐的)程序或工具可以将基于 Hyper-V 的容器及其数据迁移到 WSL-2。
图像可以很容易地重新下载。容器设置和数据迁移到 WSL-2 怎么样?
当然我可以手动完成。我 可以 使用 busybox
将卷转储到我的本地驱动器(作为 tar)并使用另一个 busybox 实例
恢复
当然,这里是我的经验分享
重构 docker run
语法
首先,您需要记住或重构启动容器的语法,以便稍后重新运行它们。这个想法是从现有容器中收集尽可能多的信息,以重新运行它们
这里不错starting point
##迁移卷
这介于易于执行和长期 运行ning 任务之间。简单,因为我只用了一个容器,又长又乏味,因为它需要多个命令
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
冲洗并重复您感兴趣的所有命名卷。我只有一堆
转储您不会able/willing重建的图像
就我而言,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脚本
在 DockerCon 2020 之后,我热情地下载了 Windows10 2004,并尝试将 DockerDesktop 升级到 WSL 2 容器并进行实验。
我有几个容器,特别是几个数据库 以及它们的数据 存储在卷中。 Postgres 和 MS SQL 案例中的服务器。
我不想丢失数据,尽管它并不重要。我使用 Docker 卷而不是 OS 挂载,因为我反复看到 不 推荐使用 Windows 挂载来存储数据库数据。
当我第一次启用 WSL-2 时,我所有的容器和卷都消失了。
我想问一下是否有任何(推荐的)程序或工具可以将基于 Hyper-V 的容器及其数据迁移到 WSL-2。
图像可以很容易地重新下载。容器设置和数据迁移到 WSL-2 怎么样?
当然我可以手动完成。我 可以 使用 busybox
将卷转储到我的本地驱动器(作为 tar)并使用另一个 busybox 实例
当然,这里是我的经验分享
重构 docker run
语法
首先,您需要记住或重构启动容器的语法,以便稍后重新运行它们。这个想法是从现有容器中收集尽可能多的信息,以重新运行它们
这里不错starting point
##迁移卷
这介于易于执行和长期 运行ning 任务之间。简单,因为我只用了一个容器,又长又乏味,因为它需要多个命令
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
冲洗并重复您感兴趣的所有命名卷。我只有一堆
转储您不会able/willing重建的图像
就我而言,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脚本