【问题标题】:Migrating existing containers from Hyper-V to WSL2 technology将现有容器从 Hyper-V 迁移到 WSL2 技术
【发布时间】:2020-09-19 16:57:04
【问题描述】:

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

我有几个容器,特别是几个数据库连同它们的数据存储在卷中。 Postgres 和 MS SQL Server 的案例。

我不想丢失数据,尽管这并不重要。我使用 Docker 卷而不是操作系统挂载,因为我反复看到建议使用 Windows 挂载来存储数据库数据。

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

我想问一下是否有任何(推荐的)程序或工具可以将基于 Hyper-V 的容器连同它们的数据一起迁移到 WSL-2。

图像可以很容易地重新下载。容器设置和数据迁移到 WSL-2 怎么样?

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

【问题讨论】:

    标签: docker docker-desktop


    【解决方案1】:

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

    重构 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 命令行,启动它们以重新创建容器。

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

    【讨论】:

    • 你创建过那个脚本吗? ? 我今晚刚切换到 wsl2,并且在我的 hyper v vm 上有大量命名卷。 ?
    • 当然不会。我知道我承诺自己会做很多事情......但我有很多工作要关心
    • 关于重构 docker run 语法的一个提示:stackoverflow.com/questions/32758793/… 链接到一个工具,该工具以编程方式从容器派生docker run 命令。
    猜你喜欢
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    相关资源
    最近更新 更多