繁体   English   中英

无法从Dockerfile构建docker镜像

[英]Can't build docker image from Dockerfile

您好我正在尝试从Docker文件构建Docker镜像并获得以下错误:

java.lang.IllegalStateException:无法在com.spotify.docker的com.google.common.base.Preconditions.checkState(Preconditions.java:444)〜[guava-21.0.jar:na]中构建后获取图像ID或摘要.client.DefaultDockerClient $ BuildProgressHandler.getImageId(DefaultDockerClient.java:298)~ [docker-client-8.11.7.jar:8.11.7] at com.spotify.docker.client.DefaultDockerClient $ BuildProgressHandler.access $ 1200(DefaultDockerClient.java :287)〜[docker-client-8.11.7.jar:8.11.7] at 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-client版本:8.11.7

我如何调用docker构建函数:

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);
        }
    }
});

我可以提交任何其他相关信息,并感谢任何帮助或想法。

编辑以添加所需信息:

image是docker图像的个人数据表示,唯一相关的是它具有我想要标记docker的名称。

dockerfilefilename再次只是一个包含dockerfile文件名的字符串。 例如,字符串“Dockerfile”。

dockerClientdockerClient的一个实例。 它是这样创建的:

`

    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;

`

我已经检查过,状态代码实际上是200.我已经尝试了许多成功的驱动程序的Docker命令。

我遇到了同样的问题(正如我在评论中所说的那样)并设法修复它。 您获得的错误是一般错误,并且是由Docker客户端代码中的失败健全性检查引起的,这可能是由无数不同的事情引起的。

为了得到导致完整性检查失败的具体原因,您可以在进度处理程序中查看message.error() - 在我的情况下,那里的错误消息非常清楚。

我最后遇到了以下问题。 在我的dockerfile中,维护者拼写错误。 请尝试使用docker build -t构建映像进行调试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM