Como 'instalação do plugin docker' para o plugin baseado em json

9

Estou trabalhando em um novo plug-in de volume e preciso que todos os testes de vol-test sejam aprovados. E todos os testes foram aprovados com êxito (em um ambiente com plug-in instalado), exceto o primeiro, que é docker plugin install. O fato é que existem três maneiras possíveis de instalar um plug-in personalizado:

Os arquivos .sock são soquetes de domínio UNIX.
Os arquivos .spec são arquivos de texto que contêm uma URL, como unix: ///other.sock ou tcp: // localhost: 8080.
Arquivos .json são arquivos de texto que contêm uma especificação json completa para o plug-in.

e usamos json, que é simplesmente um servidor REST que implementa a API do docker (escrita em java, spring). O processo de instalação é simples: basta copiar o arquivo json /etc/docker/pluginse o dockerd o descobre automaticamente.
O problema surge quando tento integrar o plugin no docker plugin installcomando. Como indicado aqui :

O Docker procura primeiro o plug-in no seu host do Docker. Se o plug-in não existir localmente, o plug-in será extraído do registro.

Nosso processo de instalação não pressupõe uma conexão com um registro público ou privado; portanto, precisamos do primeiro docker plugin createcomando para criar o plug-in localmente. E é aqui que estou tendo dificuldades para entender como fazer isso com o plugin baseado em json. De acordo com este documento, preciso especificar um caminho para o plug-in. Se eu usar um nome de diretório, ele espera config.jsone rootfsestará presente no diretório.

MAS
1. config.json- esta é uma configuração, que descreve as .sockconfigurações de formato, e não o .jsonformato (por favor, corrija-me se estiver errado)
2. como faço para criar os rootfs e por que preciso se meu plug-in é apenas um REST autônomo serviço e não é mesmo no recipiente?

Aprecio qualquer ajuda.

Vic K
fonte

Respostas:

-1

config.json - é uma configuração que descreve as configurações do formato .sock, e não o formato .json (por favor, corrija-me se estiver errado)

Eu o verifiquei trabalhando com arquivos .spec, mas não tenho muita certeza de como ele funciona com arquivos json. Para arquivos .spec, você não menciona arquivos .spec em config.json. Isso é usado apenas para plugins de soquete unix (opção 1). De fato, não é necessário ter o config.json para plugins de soquete TCP.

como crio o rootfs e por que preciso dele se meu plug-in é apenas um serviço REST independente e nem está no contêiner?

No meu entendimento, o rootfs é apenas para plugins de soquete unix. A descoberta de plug-ins funciona imediatamente se os arquivos .spec existirem na pasta correta. Em poucas palavras, basta criar o arquivo spec e colocá-lo na pasta de descoberta correta e tentar inicializar o contêiner com esse nome de plug-in. Você não precisa executar comandos como "plugin docker create / install / enable". Você executa o servidor, coloca o arquivo na pasta correta e permite que novos contêineres usem esse plug-in.

Rajul Mittal
fonte