Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker:导出图像失败:创建图像失败:获取图层失败_Docker_Dockerfile - Fatal编程技术网

Docker:导出图像失败:创建图像失败:获取图层失败

Docker:导出图像失败:创建图像失败:获取图层失败,docker,dockerfile,Docker,Dockerfile,我得到了以下错误: 无法导出图像:无法创建图像:无法获取图层 sha256:XXXXXXXXXXXX:层不存在 Dockerfile: FROM openjdk:8 COPY ./lib/ /usr/src/app/BOOT-INF/lib/ COPY ./lib/entities-1.0-SNAPSHOT.jar /usr/src/app/BOOT-INF/lib/entities-1.0-SNAPSHOT.jar COPY ./app/ /usr/src/app/ WORKDIR /usr/

我得到了以下错误:

无法导出图像:无法创建图像:无法获取图层 sha256:XXXXXXXXXXXX:层不存在

Dockerfile

FROM openjdk:8
COPY ./lib/ /usr/src/app/BOOT-INF/lib/
COPY ./lib/entities-1.0-SNAPSHOT.jar /usr/src/app/BOOT-INF/lib/entities-1.0-SNAPSHOT.jar
COPY ./app/ /usr/src/app/
WORKDIR /usr/src
CMD ["java", "-cp", "app/", "org.springframework.boot.loader.JarLauncher"]
Step 3/6 : COPY ./lib/entities-1.0-SNAPSHOT.jar /usr/src/entities-1.0-SNAPSHOT.jar
 ---> 3acb1f6c911a
Step 4/6 : COPY ./app.jar /usr/src/app.jar
failed to export image: failed to create image: failed to get layer sha256:33a94c44f7804ae3f57b9e72f94323c15cef7267be7eb95d90d2a1673c4b33b9: layer does not exist
输出

FROM openjdk:8
COPY ./lib/ /usr/src/app/BOOT-INF/lib/
COPY ./lib/entities-1.0-SNAPSHOT.jar /usr/src/app/BOOT-INF/lib/entities-1.0-SNAPSHOT.jar
COPY ./app/ /usr/src/app/
WORKDIR /usr/src
CMD ["java", "-cp", "app/", "org.springframework.boot.loader.JarLauncher"]
Step 3/6 : COPY ./lib/entities-1.0-SNAPSHOT.jar /usr/src/entities-1.0-SNAPSHOT.jar
 ---> 3acb1f6c911a
Step 4/6 : COPY ./app.jar /usr/src/app.jar
failed to export image: failed to create image: failed to get layer sha256:33a94c44f7804ae3f57b9e72f94323c15cef7267be7eb95d90d2a1673c4b33b9: layer does not exist
第二次运行总是有帮助的-错误消失。 我正在构建多个不同的图像(不同的JAR),在不同的目录中使用不同的DockerFile。但Dockerfiles的内容是相同的

我想这个错误是在我添加以下内容后出现的:

COPY ./lib/entities-1.0-SNAPSHOT.jar /usr/src/app/BOOT-INF/lib/entities-1.0-SNAPSHOT.jar

我不想删除该行:应用程序和实体是我的LIB。如果我删除行-我将得到一个第三方libs(50mb)与实体(2mb)合并的层。

我收到了这个错误,但它没有告诉我任何事情。如果希望它输出实际错误,请使用以下命令:

docker-compose -f "docker-compose.yml" up --remove-orphans --force-recreate' <optional service: e.g. "nginx">
docker compose-f“docker compose.yml”up--删除孤立项--强制重新创建'
发件人:

错误:服务“nginx”无法生成:无法导出映像:无法创建映像:无法获取图层sha256:63d3…:图层不存在

致:

正在创建项目\u nginx。。。完成
附加到项目\u nginx
nginx_1 | 2019/06/12 03:27:30[emerg]1#1:BIO_new_文件(“/etc/ssl/certs/dhparam.pem”)失败(ssl:error:0201002:system library:fopen:No-this-file或directory:fopen(“/etc/ssl/certs/dhparam.pem”,“r”)错误:2006D080:BIO例程:BIO_new_文件:无此类文件)


从那里我可以追踪到实际问题。但是,从最初的错误中,您无法知道导致故障的实际原因。

此问题发生在多级生成中的一系列特定的
COPY
命令中

解决方法是在
COPY
语句之间添加
RUN true

COPY ./lib/ /usr/src/app/BOOT-INF/lib/
RUN true
COPY ./lib/entities-1.0-SNAPSHOT.jar /usr/src/app/BOOT-INF/lib/entities-1.0-SNAPSHOT.jar
RUN true
COPY ./app/ /usr/src/app/
另一种似乎有效的方法是使用
BUILDKIT
启动构建,如下所示:

DOCKER_BUILDKIT=1 docker build --tag app:test .

请参阅:

docker版本?如果你看一下官方回购协议中的docker bug,就会发现它。@AlexKarshin
docker版本18.05.0-ce,build f150324782
你能分享bug的链接吗?你能解释一下为什么
运行true
有效吗?这显然对我有效。DOCKER_BUILDKIT=1有效。如果有人能解释一下为什么会这样,那就太好了,我们应该一直使用这个标志吗