插件应该在 Docker 之前启动,在 Docker 之后停止。例如,在为支持 的平台打包插件时systemd,您可能会使用systemd依赖项来管理启动和关闭顺序。
升级插件时,您应该先停止 Docker 守护进程,升级插件,然后再次启动 Docker。
插件激活
当一个插件第一次被引用时——无论是用户通过名称(例如docker run –volume-driver=foo)引用它 还是一个已经配置为使用正在启动的插件的容器——Docker 会在插件目录中查找命名插件并通过握手激活它. 请参阅下面的握手 API。
插件不会在 Docker 守护进程启动时自动激活。相反,它们只会在需要时懒惰地或按需激活。
systemd socket激活
插件也可以通过套接字激活systemd。官方插件助手 本身支持套接字激活。为了使插件被套接字激活,它需要一个service文件和一个socket文件。
service文件(例如/lib/systemd/system/your-plugin.service):
socket文件(例如/lib/systemd/system/your-plugin.socket):
这将允许插件在 Docker 守护进程连接到它们正在侦听的套接字时实际启动(例如,守护进程第一次使用它们或者插件中的一个意外关闭)。
API设计
插件 API 是基于 HTTP 的 RPC 风格的 JSON,很像 webhooks。
请求从Docker 守护进程流向插件。所以插件需要实现一个 HTTP 服务器并将其绑定到“插件发现”部分中提到的 UNIX 套接字。
所有请求都是 HTTPPOST请求。
API 通过 Accept 标头进行版本控制,该标头当前始终设置为 application/vnd.docker.plugins.v1+json.