Cómo 'instalar el complemento docker' para el complemento basado en json

9

Estoy trabajando en un nuevo plugin de volumen y debo pasar todas las pruebas de vol-test . Y tengo todas las pruebas aprobadas con éxito (en un entorno con el complemento instalado) excepto la primera, que es docker plugin install. La cuestión es que hay tres formas posibles de instalar un complemento personalizado:

Los archivos .sock son sockets de dominio UNIX.
Los archivos .spec son archivos de texto que contienen una URL, como unix: ///other.sock o tcp: // localhost: 8080.
Los archivos .json son archivos de texto que contienen una especificación json completa para el complemento.

y usamos json, que es simplemente un servidor REST que implementa la API de Docker (escrito en Java, Spring). El proceso de instalación es sencillo: simplemente copie el archivo json /etc/docker/pluginsy dockerd lo descubrirá automáticamente.
El problema surge cuando intento integrar el complemento en el docker plugin installcomando. Como se dice aquí :

Docker busca primero el complemento en su host Docker. Si el complemento no existe localmente, entonces el complemento se extrae del registro.

Nuestro proceso de instalación no asume una conexión a un registro privado o público, por lo que necesitamos el primer docker plugin createcomando para crear el complemento localmente. Y aquí es donde estoy teniendo dificultades para entender cómo hacerlo con el complemento basado en json. Según este documento, necesito especificar una ruta al complemento. Si uso un nombre de directorio que espera config.jsony rootfsestará presente en el directorio.

PERO
1. config.json- esta es una configuración, que describe las .sockconfiguraciones de formato, y no el .jsonformato (corríjame si me equivoco)
2. ¿Cómo creo el rootfs y por qué lo necesito si mi complemento es solo un RESTO independiente? servicio y ni siquiera está en el contenedor?

Agradezco cualquier ayuda.

Vic K
fuente

Respuestas:

-1

config.json: esta es una configuración que describe las configuraciones de formato .sock y no el formato .json (corríjame si me equivoco)

Lo he verificado trabajando con archivos .spec, aunque no estoy muy seguro de cómo funciona con archivos json. Para los archivos .spec, no menciona los archivos .spec en config.json. Eso se usa solo para complementos de socket Unix (opción 1). De hecho, no es necesario tener config.json para los complementos de socket TCP.

¿Cómo creo los rootfs y por qué lo necesito si mi complemento es solo un servicio REST independiente y ni siquiera está en el contenedor?

En mi opinión, rootfs es solo para complementos de socket Unix. El descubrimiento de complementos funciona de forma inmediata si existen archivos .spec en la carpeta correcta. En pocas palabras, solo crea un archivo de especificaciones y lo coloca en la carpeta de descubrimiento correcta e intenta iniciar el contenedor con ese nombre de complemento. No tiene que ejecutar comandos como "docker plugin create / install / enable". Ejecutas el servidor, colocas el archivo en la carpeta correcta y dejas que los nuevos contenedores usen ese complemento.

Rajul Mittal
fuente