跳到主要内容

Docker 镜像导入导出

Docker镜像是容器化应用的基础,它包含了运行应用所需的所有依赖项和配置。在实际开发和生产环境中,我们经常需要在不同的机器或环境中迁移或共享Docker镜像。这时,Docker镜像的导入和导出功能就显得尤为重要。

本文将详细介绍如何通过Docker命令行工具导入和导出镜像,并通过实际案例展示其应用场景。

1. 什么是Docker镜像导入导出?

Docker镜像导入导出是指将Docker镜像保存为文件(导出),或者从文件中加载镜像(导入)。这种操作通常用于以下场景:

  • 迁移镜像:将镜像从一台机器迁移到另一台机器。
  • 备份镜像:将镜像保存为文件以便后续恢复。
  • 共享镜像:在没有Docker Registry的情况下,通过文件共享镜像。

2. 导出Docker镜像

要将一个Docker镜像导出为文件,可以使用 docker save 命令。该命令将镜像保存为一个 .tar 文件。

语法

bash
docker save -o <输出文件名>.tar <镜像名>:<标签>

示例

假设我们有一个名为 my-app 的镜像,标签为 v1.0,我们可以将其导出为 my-app-v1.0.tar 文件:

bash
docker save -o my-app-v1.0.tar my-app:v1.0

输出

执行上述命令后,当前目录下会生成一个 my-app-v1.0.tar 文件,其中包含了 my-app:v1.0 镜像的所有层。

备注

docker save 命令会将镜像的所有层打包成一个 .tar 文件,因此文件可能会比较大。

3. 导入Docker镜像

要从一个 .tar 文件中导入Docker镜像,可以使用 docker load 命令。

语法

bash
docker load -i <输入文件名>.tar

示例

假设我们有一个 my-app-v1.0.tar 文件,我们可以通过以下命令将其导入到Docker中:

bash
docker load -i my-app-v1.0.tar

输出

执行上述命令后,Docker会加载镜像并将其添加到本地镜像列表中。你可以通过 docker images 命令查看导入的镜像。

提示

导入的镜像会保留其原有的名称和标签。如果你需要重命名镜像,可以使用 docker tag 命令。

4. 实际案例

场景:在不同开发环境之间迁移镜像

假设你在一台开发机器上构建了一个Docker镜像,并希望将其迁移到另一台机器上进行测试。你可以按照以下步骤操作:

  1. 在开发机器上导出镜像

    bash
    docker save -o my-app-v1.0.tar my-app:v1.0
  2. .tar 文件传输到测试机器: 你可以使用 scprsync 或其他文件传输工具将 my-app-v1.0.tar 文件传输到测试机器。

  3. 在测试机器上导入镜像

    bash
    docker load -i my-app-v1.0.tar
  4. 验证镜像: 使用 docker images 命令查看导入的镜像,并运行容器进行测试。

警告

确保两台机器的Docker版本兼容,以避免导入或运行时出现问题。

5. 总结

通过 docker savedocker load 命令,我们可以轻松地在不同环境之间迁移和共享Docker镜像。这种方法特别适用于没有Docker Registry的场景,或者需要离线传输镜像的情况。

6. 附加资源与练习

附加资源

练习

  1. 尝试将一个现有的Docker镜像导出为 .tar 文件,并将其导入到另一台机器上。
  2. 使用 docker tag 命令重命名导入的镜像,并运行容器进行测试。

通过实践这些操作,你将更好地掌握Docker镜像的导入导出技巧,为后续的容器化开发打下坚实的基础。