如何为基于json的插件'docker plugin install'


9

我正在开发一个全新的批量插件,并且需要通过所有的vol-test测试。我已经成功通过了所有测试(在安装了插件的环境中),但第一个测试除外docker plugin install。事实是,有三种可能的方式可以安装自定义插件:

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

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

Docker首先在您的Docker主机上寻找插件。如果该插件在本地不存在,则将该插件从注册表中拉出。

我们的安装过程不假定已连接到私有或公共注册表,因此我们需要第一个docker plugin create命令才能在本地创建插件。这就是我很难理解如何使用基于json的插件做到这一点的地方。根据文档,我需要指定插件的路径。如果我使用它需要一个目录名config.jsonrootfs存在于该目录中。


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

感谢任何帮助。

Answers:


-1

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

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.