Упаковать и выпустить расширение

Эта страница содержит дополнительную информацию о том, как упаковываются и распространяются расширения Docker, а также об указании зависимостей API.

Упаковка

Расширения Docker упакованы в виде образов Docker. В образ расширения должна быть включена вся среда выполнения расширения, включая пользовательский интерфейс, серверные службы (хост или виртуальная машина) и любой необходимый двоичный файл. Каждое образ расширения должно содержать файл metadata.json в корне своей файловой системы, которую определяет содержимое расширения.

Образ должно иметь несколько этикеток:

  • org.opencontainers.image.title для имени расширения.

  • org.opencontainers.image.vendor для провайдера расширения.

  • com.docker.desktop.extension.api.versionдля версии API Docker, с которой совместимо расширение.

Упаковка и релиз расширения выполняются путём запуска docker build для создания образа и docker push, чтобы сделать образ доступным в Docker Hub с определенным тегом, который позволяет вам управлять версиями расширения.

Воспользуйтесь преимуществами образов с несколькими архитектурами для создания образов, включающих двоичные файлы ARM/AMD. Правильный образ будет использоваться для пользователей Mac в зависимости от их архитектуры. Для расширений в Docker Desktop для Windows двоичные файлы Windows, которые должны быть установлены на хосте, должны быть включены в один и тот же образ расширения. Мы вернемся к этому с некоторыми соглашениями о тегах, чтобы разрешить некоторые образы, характерные для Windows, и другие образы, характерные для Mac, на основе префикса тега. См. как создавать расширения для нескольких архитектур.

Вы можете реализовать расширения без каких-либо ограничений в репозитории кода. Докеру не нужен доступ к репозиторию кода, чтобы использовать расширение. Релиз новых версий расширения осуществляется вами.

Распространение и новые релизы

Релиз расширения Docker Desktop выполняется путём запуска docker push, чтобы отправить образ расширения в Docker Hub.

Docker Desktop включает в себя список разрешенных расширений, доступных пользователям. Репозиторий Hub образов расширений (например, mycompany/my-desktop-extension) должен быть частью списка разрешений Docker Desktop, чтобы его можно было распознать как расширение.

Данный список разрешений указывает, какие репозитории Hub должны использоваться Docker Desktop для загрузки и установки расширений с определенной версией в данный момент времени.

Любое новое образ, помещенное в репозиторий, входящий в список разрешенных, соответствует новой версии расширения. Теги образов используются для идентификации номеров версий. Версии расширения должны следовать за semver, чтобы упростить понимание и сравнение версий.

С данным выпуском Docker Desktop (включая некоторые расширения) пользователям не нужно обновлять Docker Desktop, чтобы получает новые версии определённого расширения. Более новые версии расширения могут быть выпущены независимо от релизов Docker Desktop, при условии отсутствия несоответствий Extension API.

Docker Desktop регулярно сканирует список опубликованных расширений на наличие новых версий и предоставляет пользователям уведомления, когда они могут обновить определённое расширение.

Пользователи могут загружает и установить более новую версию расширения без обновления самого Docker Desktop.

API-зависимости

Расширения должны указывать версию Extension API, на которую они полагаются. В настоящее время нет технической проверки этой версии, т. к. структура расширения все ещё находится в экспериментальном состоянии.

Docker Desktop может использовать эту версию Extension API, чтобы определить, действительна ли более новая версия расширения, учитывая текущую версию Docker Desktop пользователя. Если это так, пользователь увидит уведомление об обновлении соответствующего расширения.

Версия API, на которую опирается расширение, должна быть указана в метках образов расширения. Это позволяет Docker Desktop проверять новые версии образов расширений без предварительной загрузки образа с полным расширением.

Лицензия на расширения и Extension SDK

SDK расширения Docker распространяется под лицензией Apache 2.0 License и может использоваться бесплатно.

Нет никаких ограничений на то, как следует лицензировать каждое расширение, это должны решить авторы расширения при создании нового расширения.