在探索docker-client api (java)时,设置到运行在vm上的docker守护进程的连接到底需要哪些证书。
我在网上找到的代码:
{
// 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。
我不确定还需要做些什么,因为我是新手。
发布于 2017-09-28 21:57:23
我做了类似的事情,在远程docker守护进程上创建镜像,并将其推送到存储库并进一步生成容器。我使用了docker-java客户端,它工作得很好。你可能想看看他们的维基,像往常一样,issues页面对我很有帮助。
基本步骤:
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();}
DockerClientDockerClientBuilder.getInstance(dockerClientConfig()) DockerClient dockerClient() { dockerClient DockerClient = public public .build();dockerClient.build;}
文件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
这应该足以让您入门了。
发布于 2019-02-05 21:52:01
也许您也可以简单地使用Jib core APIs,这是一个简单的Java库,不需要安装任何docker来构建和推送映像!
要了解更多信息,请阅读this Google blog post。
https://stackoverflow.com/questions/44624805
复制相似问题