ねえ@prologic。 これまでのところ正式な仕様はありません(残念ながら:()が、基本的には、 Driver
インターフェイスを実装してから、プラグインバイナリのmain
Driver
に対してplugin.RegisterDriver()
を呼び出す必要があります。 main
メソッド。リンクされたサードパーティのプラグインをいくつか見てきましたか?
@nathanleclaire返信ありがとうございます! さまざまなサードパーティ(_ docker-machine
_でパッケージ化されていない)を見てきましたが、さまざまな問題やプルリクエストから、Docker-マシンドライバープラグインの動作は言語に依存しないという印象を受けましたか? (_または少なくともそうするつもりですか?_)
そうではありませんか?
@prologicいいえ、Golang net/rpc
かなり緊密に結合されています。
しかし、それはRPCであり、ソケットを介して話します。 :)私が欠けているもの:P
@prologic https://golang.org/pkg/net/rpc/を使用して構築されており、トランスポートコーデックはgob
、これはネイティブのGoblobエンコーディング形式です。 他の言語でgob
を使用して通信することは可能かもしれませんが(たとえばhttps://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOensを参照)、それよりも問題が多い可能性がありますそれは価値があります。
真に言語に依存しないためには、JSON-RPCやそのために特別に設計されたprotobufsのようなものを使用する必要があります。 これは間違いなく私が将来考慮していることですが、プラグインAPIのバージョンバンプが必要になります(下位互換性または上位互換性はありません)。
バンプ!
最も参考になるコメント
@prologic https://golang.org/pkg/net/rpc/を使用して構築されており、トランスポートコーデックは
gob
、これはネイティブのGoblobエンコーディング形式です。 他の言語でgob
を使用して通信することは可能かもしれませんが(たとえばhttps://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOensを参照)、それよりも問題が多い可能性がありますそれは価値があります。真に言語に依存しないためには、JSON-RPCやそのために特別に設計されたprotobufsのようなものを使用する必要があります。 これは間違いなく私が将来考慮していることですが、プラグインAPIのバージョンバンプが必要になります(下位互換性または上位互換性はありません)。