Как 'установить плагин Docker' для плагина на основе JSON

9

Я работаю над новым плагином для томов и должен пройти все тесты vol-test . И я успешно прошел все тесты (в среде с установленным плагином), кроме первого, который есть docker plugin install. Дело в том, что существует три возможных способа установки пользовательского плагина:

Файлы .sock - это доменные сокеты UNIX.
Файлы .spec - это текстовые файлы, содержащие URL, такие как unix: ///other.sock или tcp: // localhost: 8080.
Файлы .json - это текстовые файлы, содержащие полную спецификацию json для плагина.

и мы используем json, который представляет собой просто сервер REST, реализующий API-интерфейс докера (написан на Java, Spring). Процесс установки для него прямо: просто скопируйте в него файл json, /etc/docker/pluginsи dockerd автоматически обнаружит его.
Проблема возникает, когда я пытаюсь интегрировать плагин в docker plugin installкоманду. Как сказано здесь :

Docker сначала ищет плагин на вашем хосте Docker. Если плагин не существует локально, он извлекается из реестра.

Наш процесс установки не предполагает подключения к частному или общедоступному реестру, поэтому нам нужна первая docker plugin createкоманда, чтобы создать плагин локально. И вот тут у меня возникают трудности, чтобы обдумать, как это сделать с помощью плагина на основе json. Согласно этому документу, мне нужно указать путь к плагину. Если я использую имя каталога, оно ожидает config.jsonи rootfsбудет присутствовать в каталоге.

НО
1. config.json- это конфиг, описывающий .sockконфиги формата, а не .jsonформат (пожалуйста, исправьте меня, если я ошибаюсь)
2. как мне создать rootfs и зачем он мне нужен, если мой плагин является просто REST сервис а его нет даже в контейнере?

Ценю любую помощь.

Вик К
источник

Ответы:

-1

config.json - это конфиг, описывающий конфиги формата .sock, а не формат .json (исправьте меня, если я ошибаюсь)

Я проверял, что он работает с файлами .spec, но не очень уверен, как он работает с файлами json. Для файлов .spec вы не упоминаете файлы .spec в config.json. Это используется только для плагинов сокетов Unix (вариант 1). Infact нет необходимости иметь config.json для плагинов сокетов TCP.

как мне создать rootfs и зачем он мне нужен, если мой плагин - это просто отдельная служба REST, а его нет даже в контейнере?

В моем понимании rootfs только для плагинов сокетов Unix. Обнаружение плагинов работает «из коробки», если в нужной папке есть файлы .spec. В двух словах, вы просто создаете файл спецификации и помещаете его в нужную папку обнаружения и пытаетесь загрузить контейнер с этим именем плагина. Вам не нужно запускать такие команды, как «docker plugin create / install / enable». Вы запускаете сервер, помещаете файл в нужную папку и позволяете новым контейнерам использовать этот плагин.

Раджул Миттал
источник