首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用docker-client api将图像推送到docker注册表

使用docker-client api将图像推送到docker注册表
EN

Stack Overflow用户
提问于 2017-06-19 15:40:51
回答 2查看 1.9K关注 0票数 2

在探索docker-client api (java)时,设置到运行在vm上的docker守护进程的连接到底需要哪些证书。

我在网上找到的代码:

代码语言:javascript
复制
{
// Create a client based on DOCKER_HOST and DOCKER_CERT_PATH env vars
final DockerClient docker = DefaultDockerClient.fromEnv().build();

// Pull an image
docker.pull("busybox");

}

以上示例的链接位于:https://github.com/spotify/docker-client

我打算做的是访问在我的主节点上运行的docker-daemon (通过magnum api部署),并将我的java应用程序docker-image推送到注册表,这样我就可以使用这些镜像在我的集群上创建pod。

我不确定还需要做些什么,因为我是新手。

EN

回答 2

Stack Overflow用户

发布于 2017-09-28 21:57:23

我做了类似的事情,在远程docker守护进程上创建镜像,并将其推送到存储库并进一步生成容器。我使用了docker-java客户端,它工作得很好。你可能想看看他们的维基,像往常一样,issues页面对我很有帮助。

基本步骤:

  1. 基本上你需要创建一个DockerClientConfig,它是

类似于:

DefaultDockerClientConfig.createDefaultConfigBuilder() .withDockerHost("IP_where_docker_daemon_is_running_with_port") .withDockerTlsVerify("Transport_Layer_Security_accepts_Boolean") (){ DockerClientConfig dockerClientConfig .withDockerCertPath("If_tls_is_true") .build();}

  • 则需要创建一个DockerClient

DockerClientBuilder.getInstance(dockerClientConfig()) DockerClient dockerClient() { dockerClient DockerClient = public public .build();dockerClient.build;}

  • 现在您可以调用create Image、push Image、startContainer等。

文件baseDir =新建文件(appImage.getSourceUri());BuildImageResultCallback回调=新建BuildImageResultCallback(){ @Override public void onNext(BuildResponseItem item){ System.out.println(“完成->”+ item);super.onNext(item);} };PushImageResultCallback pushImageResultCallback = PushImageResultCallback(){ @Override public void onNext(PushResponseItem item){ System.out.println("It's done too - >“+ item);super.onNext(item);} };dockerClient.buildImageCmd(baseDir).withTag(appImage.getRegistryEndpoint()+"/apps/test:“+回调.getName()回调(.exec).awaitImageId();dockerClient.listImagesCmd().withShowAll(true).exec();.awaitImageId AuthConfig = appImage AuthConfig().withUsername("admin").withPassword("admin") authConfig (”http://some_ip/v2/");dockerClient.pushImageCmd(appImage.getName()) .withAuthConfig(authConfig) .withName(appImage .getRegistryEndpoint()+“/dockerClient.pushImageCmd/.withName”) .withTag(appImage.getName()) .exec(pushImageResultCallback).awaitSuccess();CreateContainerResponse containerResponse = dockerClient.createContainerCmd(appImage .getRegistryEndpoint()+ "/apps/test:“+ appImage.getName()) .exec();CreateContainerResponse

这应该足以让您入门了。

票数 0
EN

Stack Overflow用户

发布于 2019-02-05 21:52:01

也许您也可以简单地使用Jib core APIs,这是一个简单的Java库,不需要安装任何docker来构建和推送映像!

要了解更多信息,请阅读this Google blog post

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44624805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档