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

如何将整个Docker内容保存到tar文件中?,docker,dockerfile,docker-machine,docker-container,docker-image,Docker,Dockerfile,Docker Machine,Docker Container,Docker Image,我尝试使用Docker命令安装Ubuntu机器 docker run -it --name mymachine ubuntu 在那台Ubuntu机器上,我安装了以下应用程序 爪哇 解压 SSH 然后我执行了Docker commit操作Docker commit mymachine copymachine。现在,如果我在一个新的容器中运行这个复制图像,意味着它可以完美地工作。但在我的例子中,我尝试使用“save”命令保存该图像文件: 然后将这个tar文件转发到我的另一台机器上,并尝试使用以下命

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

docker run -it --name mymachine ubuntu
在那台Ubuntu机器上,我安装了以下应用程序

  • 爪哇
  • 解压
  • SSH
  • 然后我执行了Docker commit操作
    Docker commit mymachine copymachine
    。现在,如果我在一个新的容器中运行这个复制图像,意味着它可以完美地工作。但在我的例子中,我尝试使用“save”命令保存该图像文件:

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

    docker load MachineInfo.tar updatedmachine
    
    如果我尝试在容器中运行此映像,并尝试访问安装在前一个机器容器上的应用程序


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

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

  • 启动容器
  • 更新并安装jdk
  • 验证java是否已启动并可访问
  • 从另一个命令行将图像导出到tar。首先,做一个docker ps并记下安装java的容器的容器id,假设它是4719ab149ee2。使用命令将容器导出到tar中
  • 停下集装箱
  • 现在使用命令从该图像创建一个容器
  • 现在使用命令检查java是否存在

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

    保存/加载图像工作。如果要使用容器,则需要导出/导入。实际上,我已将正在运行的容器转换为该映像中的新映像,但仅尝试了“保存并加载”命令您不应在正在运行的容器中安装软件:一旦容器退出,软件将丢失。Docker有一个教程,介绍了构建和运行自定义图像的标准过程;这是在可重用映像中安装软件的正常方法。
    docker load MachineInfo.tar updatedmachine
    
    docker run -it --name mymachine ubuntu /bin/bash
    
    apt update
    apt install default-jre
    
    java -version
    
    docker export 4719ab149ee2  > mymachine.tar
    
    docker stop <container_id>
    
    docker images
    dokcer image rm <image_id>
    
    C:\Users\ameena>docker import - mymachine <  mymachine.tar
    
    docker images
    
    docker run -it --name mymachinefromimage mymachine:latest /bin/bash
    
    java --version