Как 'установить плагин Docker' для плагина на основе JSON - PullRequest
8 голосов
/ 25 октября 2019

Я работаю над новым плагином для тома, и мне необходимо пройти все тесты 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 Ответ

0 голосов
/ 04 ноября 2019

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...