我正在开发一个全新的批量插件,我需要通过所有vol-test个测试。除第一个测试docker plugin install
外,我已经成功通过了所有测试(在安装了插件的环境中)。事实是,有three种可能的方式可以安装自定义插件:
.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
命令中时,就会出现问题。如here所述:
Docker首先在您的Docker主机上寻找插件。如果该插件在本地不存在,则该插件将从注册表中拉出。
我们的安装过程不假定已连接到私有或公共注册表,因此我们需要先执行docker plugin create
命令才能在本地创建插件。这就是我很难理解如何使用基于json的插件做到这一点的地方。根据{{3}}文档,我需要指定插件的路径。如果我使用目录名称,则期望目录中包含config.json
和rootfs
。
但是
1. config.json
-这是一个配置,它描述了.sock
格式的配置,而不是.json
格式(如果我错了,请纠正我)
2.如果我的插件只是一个独立的REST服务而它甚至不在容器中,我该如何创建rootfs以及为什么需要它?
感谢任何帮助。
答案 0 :(得分:-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”之类的命令。您运行服务器,将文件放在正确的文件夹中,然后让新容器使用该插件。