【问题标题】:How to 'docker plugin install' for json-based plugin如何为基于 json 的插件“安装 docker 插件”
【发布时间】:2020-02-21 06:02:51
【问题描述】:

我正在开发一个全新的音量插件,我需要通过所有 vol-test 测试。我已经成功通过了所有测试(在安装了插件的环境中),除了第一个测试,即docker plugin install。问题是有three 可能的方式可以安装自定义插件:

.sock 文件是 UNIX 域套接字。
.spec 文件是包含 URL 的文本文件,例如 unix:///other.sock 或 tcp://localhost:8080。
.json 文件是包含完整 json 规范的文本文件 插件。

我们使用 json,它只是一个实现 docker API(用 java,spring 编写)的 REST 服务器。它的安装过程很简单:只需将 json 文件复制到 /etc/docker/plugins 中,dockerd 就会自动发现它。
当我尝试将插件集成到docker plugin install 命令时,问题就来了。正如它所说的here

Docker 首先在您的 Docker 主机上查找插件。如果该插件在本地不存在,则从注册表中提取该插件。

我们的安装过程不假定连接到私有或公共注册表,因此我们首先需要docker plugin create 命令才能在本地创建插件。这就是我很难弄清楚如何使用基于 json 的插件来做到这一点的地方。根据this doc,我需要指定插件的路径。如果我使用目录名称,它期望config.jsonrootfs 出现在目录中。

但是
1. config.json - 这是一个配置,描述.sock 格式配置,而不是.json 格式(如果我错了请纠正我)
2. 如果我的插件只是一个独立的 REST 服务并且它甚至不在容器中,我该如何创建 rootfs?为什么我需要它?

感谢任何帮助。

【问题讨论】:

    标签: java spring docker


    【解决方案1】:

    config.json - 这是一个配置,描述 .sock 格式的配置,而不是 .json 格式(如果我错了,请纠正我)

    我已经验证了它可以与 .spec 文件一起使用,但不太确定它如何与 json 文件一起使用。对于 .spec 文件,您不会在 config.json 中提及 .spec 文件。这仅用于 unix 套接字插件(选项 1)。事实上,TCP 套接字插件不需要 config.json。

    如果我的插件只是一个独立的 REST 服务并且它甚至不在容器中,我该如何创建 rootfs?为什么我需要它?

    据我了解,rootfs 仅适用于 unix 套接字插件。如果 .spec 文件存在于正确的文件夹中,则插件发现开箱即用。简而言之,您只需创建规范文件并将其放在正确的发现文件夹中,然后尝试使用该插件名称引导容器。您不必运行诸如“docker plugin create/install/enable”之类的命令。您运行服务器,将文件放在正确的文件夹中,然后让新容器使用该插件。

    【讨论】:

      猜你喜欢
      • 2022-10-08
      • 1970-01-01
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多