Java Can';t从Dockerfile生成docker映像
您好,我正在尝试从Docker文件构建Docker映像,并出现以下错误: java.lang.IllegalStateException:无法获取生成后的映像ID或摘要 在com.google.common.base.premissions.checkState(premissions.java:444)~[guava-21.0.jar:na] 在com.spotify.docker.client.DefaultDockerClient$BuildProgressHandler.getImageId(DefaultDockerClient.java:298)~[docker-client-8.11.7.jar:8.11.7] 在com.spotify.docker.client.DefaultDockerClient$BuildProgressHandler.access$1200(DefaultDockerClient.java:287)~[docker-client-8.11.7.jar:8.11.7] 在com.spotify.docker.client.DefaultDockerClient.build(DefaultDockerClient.java:1481)~[docker-client-8.11.7.jar:8.11.7] 我可以从命令行构建完全相同的Dockerfile,但是我无法调试它,因为堆栈跟踪信息不是很丰富。下面我留下一些可能相关的信息: Docker版本: 客户: 版本:17.03.2-ce API版本:1.27 服务器: 版本:17.03.2-ce API版本:1.27(最低版本1.12) spotify/docker客户端版本:8.11.7 如何调用docker构建函数: `Java Can';t从Dockerfile生成docker映像,java,docker,build,spotify-docker-client,Java,Docker,Build,Spotify Docker Client,您好,我正在尝试从Docker文件构建Docker映像,并出现以下错误: java.lang.IllegalStateException:无法获取生成后的映像ID或摘要 在com.google.common.base.premissions.checkState(premissions.java:444)~[guava-21.0.jar:na] 在com.spotify.docker.client.DefaultDockerClient$BuildProgressHandler.getImage
我查过了,状态代码实际上是200。我在驱动程序中尝试了许多Docker命令,这些命令都是成功的 我遇到了同样的问题(正如我在对问题的评论中所说的),并设法解决了它。您得到的错误是一个一般性错误,是Docker客户端代码内部的健全性检查失败的结果,该错误可能由无数不同的原因引起
要获得导致健全性检查失败的具体原因,您可以查看进度处理程序中的
message.error()
——在我的例子中,错误消息非常清楚。我遇到了以下问题。在我的dockerfile文件中,维护者拼写错误。
请尝试使用docker build-t构建映像进行调试。docker客户端、
映像
和DockerFileFileFileName
在哪里声明,他们编辑了页面以包含请求的信息。您是否修复或解决了此问题?我昨天遇到了同样的问题,到目前为止还不知道为什么会发生:(我从maven plugin收到了同样的消息,我通过删除.dockrignore
文件解决了这个问题:
final AtomicReference<String> imageIdFromMessage = new AtomicReference<>();
final String returnedImageId = dockerClient.build(
Paths.get("/absolute/path/to/folder"), image.getImageName(), dockerfilefilename,new ProgressHandler() {
@Override
public void progress(ProgressMessage message) throws DockerException {
final String imageId = message.buildImageId();
if (imageId != null) {
imageIdFromMessage.set(imageId);
}
}
});
DockerClient dc = DefaultDockerClient.fromEnv().build();
final RegistryAuth registryAuth = RegistryAuth.builder() //TODO change to external config
.email("REDACTED")
.username("REDACTED")
.password("REDACTED")
.build();
final int statusCode = dc.auth(registryAuth);
return dc;