问题描述
我正在尝试执行以下操作:
- 将 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 )
我只需要:
- 将 docker 映像构建为 tarball。
- 顺利加载上一步中的 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 (将#修改为@)