Existe um documento / pr / problema que descreve a interface RPC para plug-ins de driver? Encontrei alguns problemas relacionados # 1626 e # 1902, mas estou lutando para encontrar algo mais "concreto; não há nada nos documentos que eu possa ver?
Ei @prologic. Nenhuma especificação formal até agora (infelizmente :(), mas essencialmente a ideia é que você precisa implementar a interface Driver
e, em seguida, chamar plugin.RegisterDriver()
para seu Driver
no binário do plugin main
Método
@nathanleclaire Obrigado por responder! Eu olhei para vários terceiros (_não empacotado com docker-machine
_), no entanto, fiquei com a impressão de vários problemas e solicitações de pull que a maneira como os plug-ins do driver da máquina docker funcionavam era independente de linguagem. (_ou pelo menos pretendia ser? _)
Não é este o caso?
@prologic Não, está fortemente acoplado a Golang net/rpc
.
Mas é um RPC e fala por um soquete não? :) O que estou perdendo: P
@prologic É construído usando https://golang.org/pkg/net/rpc/ e o codec de transporte é gob
, que é o formato de codificação Go blob nativo. _Pode_ ser possível se comunicar usando gob
em outros idiomas (consulte https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens por exemplo), mas pode ser mais problemático do que Vale a pena.
Para sermos realmente independentes de linguagem, teríamos que usar algo como JSON-RPC ou protobufs, que é projetado especificamente para isso. É definitivamente algo que estou levando em consideração para o futuro, mas exigiria um aumento de versão na API do plugin (não seria compatível com versões anteriores ou posteriores).
Ressalto!
Comentários muito úteis
@prologic É construído usando https://golang.org/pkg/net/rpc/ e o codec de transporte é
gob
, que é o formato de codificação Go blob nativo. _Pode_ ser possível se comunicar usandogob
em outros idiomas (consulte https://groups.google.com/forum/#!topic/golang-nuts/xtXh0yWOens por exemplo), mas pode ser mais problemático do que Vale a pena.Para sermos realmente independentes de linguagem, teríamos que usar algo como JSON-RPC ou protobufs, que é projetado especificamente para isso. É definitivamente algo que estou levando em consideração para o futuro, mas exigiria um aumento de versão na API do plugin (não seria compatível com versões anteriores ou posteriores).