簡體   English   中英

使用Fabric8 Java客戶端將Docker映像推送到遠程注冊表

[英]Push docker image to remote registry using fabric8 java client

我正在嘗試使用適用於Java的fabric8泊塢窗客戶端將泊塢窗映像推送到dockerhub。

嘗試推送圖像時出現以下錯誤。

推送引用存儲庫[docker.io/anuruddhal/hello-world-docker]故障:拒絕:請求的對資源的訪問被拒絕

如何正確驗證客戶端?

以下是我的代碼:

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

我想到了。

您需要將auth config和注冊表URL一起添加到客戶端。

AuthConfig authConfig = new AuthConfigBuilder().withUsername("anuruddhal").withPassword
                ("xxxxxxx")
                .build();
        Config config = new ConfigBuilder()
                .withDockerUrl(dockerUrl)
                .addToAuthConfigs("index.docker.io", authConfig)
                .build();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM