当前位置: 首页 > 知识库问答 >
问题:

使用fabric8 java客户机将docker图像推送到远程注册表

邵和硕
2023-03-14

我试图使用fabric8 docker client for Java将一个docker图像推送到dockerhub。

public static void pushImage(DockerModel dockerModel) throws InterruptedException, IOException {

        String dockerUrl = "unix:///var/run/docker.sock";
        String image = dockerModel.getName();
        String registry = "index.docker.io";
        String namespace = "anuruddhal";

        String repositoryName = registry + "/" + namespace + "/" + image;

        Config config = new ConfigBuilder()
                .withDockerUrl(dockerUrl)
                .withUsername("anuruddhal")
                .withPassword("xxxxxxxxx")
                .build();

        DockerClient client = new DefaultDockerClient(config);
        final CountDownLatch pushDone = new CountDownLatch(1);

        client.image().withName(image).tag().inRepository(repositoryName).force().withTagName("1.0");

        OutputHandle handle = client.image().withName(repositoryName).push()
                .usingListener(new EventListener() {
                    @Override
                    public void onSuccess(String message) {
                        printSuccess("Success:" + message);
                        pushDone.countDown();
                    }

                    @Override
                    public void onError(String messsage) {
                        printError("Failure:" + messsage);
                        pushDone.countDown();
                    }

                    @Override
                    public void onError(Throwable t) {
                        printError(t.getMessage());
                        pushDone.countDown();
                    }

                    @Override
                    public void onEvent(String event) {
                        printDebug(event);
                    }
                })
                .withTag("1.0")
                .toRegistry();

        pushDone.await();
        handle.close();
        client.close();
    }

共有1个答案

卞俊哲
2023-03-14

我想通了。

您需要将auth配置与注册表URL一起添加到客户端。

AuthConfig authConfig = new AuthConfigBuilder().withUsername("anuruddhal").withPassword
                ("xxxxxxx")
                .build();
        Config config = new ConfigBuilder()
                .withDockerUrl(dockerUrl)
                .addToAuthConfigs("index.docker.io", authConfig)
                .build();
 类似资料:
  • 我无法将docker映像推送到低于错误的工件注册表 登录和拉取工作正常 詹金斯档案: Dockerfile: 我不确定这是怎么回事。我可以在jenkins从属节点上手动推送图像。但使用詹金斯会产生错误 我构建工作的日志 这是我的构建日志中的内容。

  • 我无法将docker映像推送到heroku注册表。 根据docker的说法,我已成功登录: 在那之后,我运行了,我得到了一些令人困惑的错误,说我试图推送到一个不安全的repo,而de-output中的url看起来是安全的(以https开头)。我做错了什么? 我正在使用以下jib配置: jib的Maven输出:build wiht-X:

  • 我还不太了解dockerhub。我得到了以下案例: 我为中心标记了几张图片 docker标签myImageA myuser/myrepo: 1 docker标签myImageB myuser/myrepo: 1 docker标签myImageC myuser/myrepo: 1 然后我用docker push myuser/myrepo推送它们 现在,当删除所有本地图像并再次拉入自己的docker

  • 我正在使用fabric8 maven插件在Google云平台上运行的Jenkins上构建Docker映像。 该插件提供了将图像推送到Docker注册表的功能,但我无法使其与Google容器注册表一起工作,因为它无法进行身份验证。 从我的Jenkins管道中,我可以使用和访问注册表。 对于访问Docker注册中心,Fable8 Maven插件可以与凭据或扩展身份验证一起使用,但这似乎仅适用于AWS。

  • 问题内容: 我已经创建了自己的docker文件(该文件运行一个显示“ helloworld”的shell脚本)。图像是“ hellodocker”,标签是“ mytag”,我现在拥有: 如何将Docker映像推送到dockerhub?我用。这给出了“无此类ID”错误。我想念什么?提前致谢。 问题答案: 您要么在构建时就将其标记为标签,例如 或创建绑定到同一图像的新标签,即

  • 我正在尝试使用Google JIB maven插件构建我的docker映像并将其部署到私有注册表。但是,它因访问私有注册表而失败。 我已在我的Windows 10机器上安装了Docker Desktop v19.03.1。接下来,我正在尝试使用Google JIB Maven插件构建我的Spring Boot应用程序,然后推送构建在私有注册表上的映像。 我已将证书添加到“示例”。注册处。com'到