如何使用导出的图像历史记录即导出的图层构建 docker tarball 图像? 我只需要: 将 docker 映像构建为 tarball 顺利加载上一步中的 tarball

问题描述

我正在尝试执行以下操作:

  • 将 docker 镜像构建为 tarball
  • 使此映像可在另一台 docker 机器上运行。

我做了以下

docker build . -f Dockerfile -t todelete:v01 -o type=tar,dest=todelBuild.tar  ( Step #1 )

当我尝试加载这个 tarball 图像时

docker load -i todelBuild.tar                                                 ( Step #2 )

我收到以下错误

open /var/lib/docker/tmp/docker-import-999327241/bin/json: no such file or directory

但是,我能够成功导入它 但是如果我尝试运行这个“导入”图像,
它不会运行,除非我在导入时指定一个入口点并且公开一个端口以便它可以访问。
不需要,我不希望另一台机器的用户执行以下操作。

docker import todelBuild.tar  todelete:v02 --change "ENTRYPOINT java -jar home/app/app.jar" -c "expose 9080" ( Step #3 )

我只需要:
  1. 将 docker 映像构建为 tarball。
  2. 顺利加载上一步中的 tarball。

那么,如何在不重做的情况下加载甚至导入 docker 文件命令。
不想在导入 tarball 时执行第 3 步。


我知道加载和导入的区别 并且如果我将图像load作为 tarball,我可以实现该 save 目标。

我一直在寻找和调查,但没有显着的结果 我唯一的观察如下,

  • 当我构建映像以本地在我的泊坞窗中显示=> =>exporting layers
 => [internal] load build deFinition from Dockerfile                                                                             0.0s
 => => transferring dockerfile: 36B                                                                                              0.0s
 => [internal] load .dockerignore                                                                                                0.0s
 => => transferring context: 2B                                                                                                  0.0s
 => [internal] load Metadata for docker.io/library/openjdk:8-jdk-alpine                                                          1.4s
 => [internal] load build context                                                                                                0.0s
 => => transferring context: 78B                                                                                                 0.0s
 => [1/7] FROM docker.io/library/openjdk:8-jdk-alpine@sha256:94792824df2df33402f201713f932b58cb9de94a0cd524164a0f2283343547b3    0.0s
 => CACHED [2/7] RUN apk add mailcap                                                                                             0.0s
 => CACHED [3/7] RUN addgroup -S some groups and users                                                                           0.0s
 => CACHED [4/7] workdir /home/app                                                                                               0.0s
 => CACHED [5/7] RUN mkdir data                                                                                                  0.0s
 => CACHED [6/7] RUN ls && pwd                                                                                                   0.0s
 => CACHED [7/7] copY target/*.jar app.jar                                                                                       0.0s
 => exporting to image                                                                                                           0.0s
 => => exporting layers                                                                                                          0.0s
 => => writing image sha256:9c130e50b7dd6d34d9bccf2bd29a068c346d0190880ed5348d2eb693459ca44e                                     0.0s
 => => naming to docker.io/library/todelete:v01                                                                                  0.0s 
  • 但是,当我选择将图像构建为 tarball 时,导出层丢失了
 => CACHED [6/7] RUN ls && pwd                                                                                                   0.0s
 => CACHED [7/7] copY target/*.jar app.jar                                                                                       0.0s
 => exporting to client                                                                                                          1.9s
 => => sending tarball                                                                                                           1.9s

那么,我如何导出压缩包中的图层...并最好保留图像历史记录?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)