我正在尝试使用fabric8 docker client将Docker镜像推送到dockerhub for java。
尝试推送图像时出现以下错误。
推送指的是存储库 [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();
}
答案 0 :(得分:0)
我明白了。
您需要将auth config与注册表URL一起添加到客户端。
AuthConfig authConfig = new AuthConfigBuilder().withUsername("anuruddhal").withPassword
("xxxxxxx")
.build();
Config config = new ConfigBuilder()
.withDockerUrl(dockerUrl)
.addToAuthConfigs("index.docker.io", authConfig)
.build();