¿Hay algún documento / pr / problema que describa la interfaz RPC para complementos de controladores? Encontré algunos problemas relacionados # 1626 y # 1902, pero estoy luchando por encontrar algo más "concreto; ¿no hay nada en los documentos que pueda ver?"
Hola @prologic. No hay especificaciones formales hasta ahora (desafortunadamente :() pero esencialmente la idea es que necesita implementar la interfaz Driver
y luego llamar a plugin.RegisterDriver()
para su Driver
en el binario de su complemento main
método. ¿Ha mirado algunos de los complementos de terceros vinculados?
@nathanleclaire ¡ Gracias por responder! He visto varios terceros (_no empaquetados con docker-machine
_), sin embargo, tenía la impresión de varios problemas y solicitudes de extracción de que la forma en que funcionaban los complementos del controlador de la máquina acoplable era independiente del idioma. (_o al menos destinado a ser? _)
¿No es este el caso?
@prologic No, está bastante acoplado a Golang net/rpc
.
Pero es un RPC y habla por un socket, ¿no? :) ¿Qué me estoy perdiendo: P
@prologic Está construido usando https://golang.org/pkg/net/rpc/ y el códec de transporte es gob
, que es el formato de codificación de blob nativo de Go. _Podría_ ser posible comunicarse usando gob
en otros idiomas (consulte https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens, por ejemplo), pero podría ser más problemático que merece la pena.
Para ser verdaderamente independientes del lenguaje, tendríamos que usar algo como JSON-RPC o protobufs que está diseñado específicamente para eso. Definitivamente es algo que estoy tomando en consideración para el futuro, pero requeriría un cambio de versión en la API del complemento (no sería compatible con versiones anteriores o posteriores).
¡Protuberancia!
Comentario más útil
@prologic Está construido usando https://golang.org/pkg/net/rpc/ y el códec de transporte es
gob
, que es el formato de codificación de blob nativo de Go. _Podría_ ser posible comunicarse usandogob
en otros idiomas (consulte https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens, por ejemplo), pero podría ser más problemático que merece la pena.Para ser verdaderamente independientes del lenguaje, tendríamos que usar algo como JSON-RPC o protobufs que está diseñado específicamente para eso. Definitivamente es algo que estoy tomando en consideración para el futuro, pero requeriría un cambio de versión en la API del complemento (no sería compatible con versiones anteriores o posteriores).