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

2024-04-18

在探索 docker-client api (java) 时,设置与虚拟机上运行的 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 https://github.com/spotify/docker-client

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

我不确定还需要做什么,因为我对此很陌生。


我做了类似的事情,在远程 Docker 守护进程上创建图像并将其推送到存储库并进一步生成容器。我用了docker-java https://github.com/docker-java/docker-java客户端并且工作正常。你可能想浏览他们的维基,issues https://github.com/docker-java/docker-java/issues事实证明,像往常一样,页面对我非常有帮助。

基本步骤:

  1. 基本上你需要创建一个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();
    }
    
  2. 然后你需要创建一个DockerClient

    public DockerClient dockerClient() {
        DockerClient dockerClient = DockerClientBuilder.getInstance(dockerClientConfig())
            .withDockerCmdExecFactory(nettyDockerCmdExecFactory())
            .build();
        return dockerClient;
    }
    
  3. 现在您已准备好调用以创建图像、推送图像, 启动容器等

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

这应该足以让您开始。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 docker-client api 将镜像推送到 docker 注册表 的相关文章

  • 有没有办法在 java 桌面应用程序上体验 Windows 8 Metro 的外观和感觉?

    正如标题中所述 我真的很难找到这个问题的好答案 我目前正在开发一个仅桌面应用程序 根本没有 CSS 或任何互联网部分 我希望它看起来像 Windows 8 的 Metro 外观 我不是在谈论布局 而是在谈论外观和感觉 我特别喜欢方形而不是圆
  • 在 Eclipse 中隐藏重复的工具栏项

    我不知道如何 但我的 STS 有重复的工具栏项目 我不知道如何删除它们 这是我复制的工具栏的样子 我想摆脱这些 我试图隐藏工具栏 但这没有帮助 有人知道如何删除重复的吗 自从升级到 Oxygen 以来 我一直遇到同样的问题 我无法可靠地重现
  • 从 BroadcastReceiver 获取方法来更新 UI

    我正在尝试根据变量的变化更新用户界面BroadcastReceiver 因此 我需要调用一个扩展类的方法 以获取我提到的变量 BroadcastReceiver in MainActivity取决于但我无法以任何方式获得真正的返回值 扩展的
  • Java - 红、绿、蓝获取RGB

    通过致电getRGB int x int y with a BufferedImage对象 得到一个负数 如何将三个不同的值 红色 绿色和蓝色 转换为这个单个负数 使用颜色类 new Color r g b getRGB
  • 在此代码中,Runnable 未实例化。为什么?

    Runnable cannot instantiate public class Thread4 public static void main String args Thread t1 new Thread new Runnable R
  • 使用 Eclipse 将具有外部依赖项的 Java 项目导出到 jar

    有没有一种简单的方法可以将 Java 项目 包括其所有外部依赖项 导出到标准 jar 文件 我开发了一个使用多个 Apache 库的 SDK 我希望能够将该项目作为单个 jar 发布 到目前为止我找到的这个问题的答案要求将项目打包为 Run
  • 如果主引用指向 null,WeakReference 或 SoftReference 有何不同

    我正在读关于WeakReference https docs oracle com javase 10 docs api java lang ref WeakReference html and SoftReference https do
  • 为什么Java中的文件名与公共类名相同? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在Java中 文件名应该与文件名相同public class包含在该文件中 为什么这是一个限制 它有什么目的 Java 有一个有趣的方法 如果给
  • Java - toString 到 Color

    我一整天都在努力解决这个问题 基本上我做了一个 for 循环 将条目添加到数组列表中 其中一项是 颜色 变量 我已经用过random nextInt为颜色构造函数的红色 绿色和蓝色部分创建新值 我还设置了一个toString方法 这样我就可
  • Java时间转正常格式

    我有 Java 时间1380822000000 我想转换为我可以阅读的内容 import java util Date object Ws1 val a new Date 1380822000000 toString 导致异常 warnin
  • 如何使用 Swipe 视图实现 Android TabLayout 设计支持库

    我将使用 android TabLayout 设计支持库 但我不知道如何使用滑动视图 这是我的代码 XML
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • 使用 equals 方法比较两个对象,Java

    我有一个对象数组 我想将它们与目标对象进行比较 我想返回与目标对象完全匹配的对象的数量 这是我的计数方法 public int countMatchingGhosts Ghost target int count 0 for int i 0
  • java数学中的组合“N选择R”?

    java库中是否有内置方法可以为任何N R计算 N选择R 公式 实际上很容易计算N choose K甚至不需要计算阶乘 我们知道 公式为 N choose K is N N K K 因此 公式为 N choose K 1 is N N N
  • EJB 中 @Stateless 相对于 @Singleton 的真正用例是什么

    如果我正确理解EJB Singleton实际上与普通Java中的Singleton相同 也是spring中的单例 gt 一个实例 每个调用同时通过同一个实例 Stateless 声明一个 bean 它可以 但不得 具有多个实例 但限制是一个
  • Java:java.util.Preferences 失败

    我的程序将加密的产品密钥数据保存到计算机上java util Preferences类 系统首选项 而不是用户 问题是 在 Windows 和 Linux 上 尚未在 OSX 上测试过 但可能是相同的 如果我不运行该程序sudo或者具有管理
  • 如何加载图像文件到ImageView?

    我试图在从文件选择器中选择图像文件后立即显示该图像文件 文件选择器仅限于 png 和 jpg 文件 所选文件存储在文件类型的变量中 为此 我设置了一个 ImageView 我希望用这个新文件设置图像 唯一的问题是它的类型是文件而不是图像 如
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • 在java中创建一个XML树并将其转换为json对象

    我尝试创建也能够转换为 json 的树 但对于只有一个xpath 当我尝试实现多个 xpath 时 我无法获得所需的输出 这里我分享一下我的实现 private static Document addElemtbypath List
  • 如何让JComboBox中的内容居中显示?

    目前我有这个JComboBox 我怎样才能将其中的内容居中 String strs new String 15158133110 15158133124 15158133458 JComboBox com new JComboBox str

随机推荐