【问题标题】:How to save entire Docker content into tar file?如何将整个 Docker 内容保存到 tar 文件中?
【发布时间】:2021-07-08 08:58:29
【问题描述】:

我尝试使用 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

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

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

【问题讨论】:

  • 保存/加载图像。如果你想使用容器,你需要导出/导入。
  • 实际上,我将运行中的容器转换为新图像,该图像中只尝试了保存和加载命令
  • 永远不要在正在运行的容器中安装软件:一旦容器退出,它就会丢失。 Docker 有一个sample application 教程,其中介绍了构建和运行自定义映像的标准过程;这是将软件安装到可重用映像中的正常方式。

标签: docker dockerfile docker-machine docker-container docker-image


【解决方案1】:

内联@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 是验证步骤。

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2022-01-23
    • 1970-01-01
    • 2015-06-24
    • 2014-03-22
    相关资源
    最近更新 更多