嘿@prologic。 到目前为止还没有正式的规范(不幸的是 :( )但本质上的想法是你需要实现Driver
接口,然后在你的插件二进制文件的main
为你的Driver
调用plugin.RegisterDriver()
main
方法。你看过一些链接的第 3 方插件吗?
@nathanleclaire感谢您的回复! 我看过各种 3rd-party(_not 与docker-machine
一起打包),但是我从各种问题和拉取请求中得出的印象是,docker-machine 驱动程序插件的工作方式与语言无关? (_或至少应该是?_)
不是这样吗?
@prologic不,它与 Golang net/rpc
紧密耦合。
但它是一个 RPC 并通过套接字进行对话,不是吗? :) 我错过了什么:P
@prologic它是使用https://golang.org/pkg/net/rpc/构建的,传输编解码器是gob
,这是本机 Go blob 编码格式。 _可能_使用其他语言的gob
进行交流(例如,参见 https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens),但这可能比这是值得的。
为了真正与语言无关,我们必须使用专门为此设计的 JSON-RPC 或 protobufs 之类的东西。 这绝对是我未来考虑的事情,但需要插件 API 的版本提升(它不会向后或向前兼容)。
撞!
最有用的评论
@prologic它是使用https://golang.org/pkg/net/rpc/构建的,传输编解码器是
gob
,这是本机 Go blob 编码格式。 _可能_使用其他语言的gob
进行交流(例如,参见 https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens),但这可能比这是值得的。为了真正与语言无关,我们必须使用专门为此设计的 JSON-RPC 或 protobufs 之类的东西。 这绝对是我未来考虑的事情,但需要插件 API 的版本提升(它不会向后或向前兼容)。