Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用docker客户端api将图像推送到docker注册表_Java_Docker Registry_Spotify Docker Client - Fatal编程技术网

Java 使用docker客户端api将图像推送到docker注册表

Java 使用docker客户端api将图像推送到docker注册表,java,docker-registry,spotify-docker-client,Java,Docker Registry,Spotify Docker Client,在探索docker客户端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"); } 上述

在探索docker客户端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");

}
上述示例的链接位于:

我打算做的是访问主节点上运行的docker守护进程(通过magnum api部署),并将我的java应用程序docker映像推送到注册表中,以便我可以使用这些映像在集群上创建POD


我不确定还需要做什么,因为我对这一点还不熟悉

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

基本步骤:

  • 基本上,您需要创建一个
    DockerClientConfig
    ,它是
    比如:

    public DockerClientConfig dockerClientConfig() {
       return DefaultDockerClientConfig.createDefaultConfigBuilder()
           .withDockerHost("IP_where_docker_daemon_is_running_with_port")
           .withDockerTlsVerify("Transport_Layer_Security_accepts_Boolean")
           .withDockerCertPath("If_tls_is_true")
           .build();
    }
    
  • 然后您需要创建一个
    DockerClient

    public DockerClient dockerClient() {
        DockerClient dockerClient = DockerClientBuilder.getInstance(dockerClientConfig())
            .withDockerCmdExecFactory(nettyDockerCmdExecFactory())
            .build();
        return dockerClient;
    }
    
  • 现在您可以调用创建映像、推送映像、, startContainer等

       File baseDir = new File(appImage.getSourceUri());
    
        BuildImageResultCallback callback = new BuildImageResultCallback(){
            @Override
            public void onNext(BuildResponseItem item){
                System.out.println("It's done - > " + item);
                super.onNext(item);
            }
        };
    
        PushImageResultCallback pushImageResultCallback = new 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:" + appImage
                               .getName()).exec(callback).awaitImageId();
    
        dockerClient.listImagesCmd().withShowAll(true).exec();
    
        AuthConfig authConfig = new AuthConfig().withUsername("admin").withPassword("admin")
                                                .withRegistryAddress("http://some_ip/v2/");
    
        dockerClient.pushImageCmd(appImage.getName())
                    .withAuthConfig(authConfig)
                    .withName(appImage
                    .getRegistryEndpoint()+ "/apps/test")
                    .withTag(appImage.getName())
                    .exec(pushImageResultCallback).awaitSuccess();
    
        CreateContainerResponse containerResponse = dockerClient.createContainerCmd(appImage
            .getRegistryEndpoint()+ "/apps/test:" + appImage.getName())
            .exec();
    
        dockerClient.startContainerCmd(containerResponse.getId()).exec();
    

  • 这应该足以让你开始

    也许您也可以简单地使用它,这是一个简单的Java库,不需要安装任何
    docker
    来构建并推送图像

    阅读以了解更多信息