如何将整个 Docker 内容保存到 tar 文件中?

问题描述

我尝试使用 Docker 命令安装 Ubuntu 机器

docker run -it --name mymachine ubuntu

在那台 Ubuntu 机器上,我安装了以下应用程序

  1. Java
  2. 解压
  3. SSH

然后我执行了 Docker 提交操作 docker commit mymachine copymachine。现在,如果我在新容器中运行此副本映像,则意味着它可以完美运行。但就我而言,我正在尝试使用“保存”命令保存该图像文件

docker save copymachine > MachineInfo.tar

然后将此 tar 文件转发到我的另一台机器并尝试使用以下命令在该 Docker 中加载此图像

docker load MachineInfo.tar updatedmachine

如果我尝试在容器中运行此映像并尝试访问安装在先前机器容器上的应用程序。

但没有任何应用程序显示在新创建的容器中。

解决方法

内联@halfer 注释,您需要执行简单的导出和导入。请执行以下步骤。

  1. 启动容器
docker run -it --name mymachine ubuntu /bin/bash
  1. 更新并安装 jdk
apt update
apt install default-jre
  1. 验证 java 是否已启动且可访问
java -version
  1. 从另一个命令行将图像导出到 tar。首先,执行 docker ps 并记下您安装 java 的容器的容器 ID,假设它是 4719ab149ee2。使用命令将容器导出到 tar 中。
docker export 4719ab149ee2  > mymachine.tar
  1. 停止容器。
docker stop <container_id>
  1. 通过执行以下命令从本地注册表中删除 ubuntu 映像。
docker images
dokcer image rm <image_id>
  1. 现在使用命令从 tar 文件导入图像。
C:\Users\ameena>docker import - mymachine <  mymachine.tar
  1. 现在通过执行命令检查图像是否已导入到您的本地注册表中。
docker images
  1. 现在使用命令从该图像创建一个容器。
docker run -it --name mymachinefromimage mymachine:latest /bin/bash
  1. 现在使用命令检查 java 是否存在。
java --version

注意:步骤 5、6、7、8、9 是验证步骤。