У меня есть изображение Docker и инструмент cli. Я хочу создать пакет Snap , который извлекает образ Docker и запускает его на локальном Docker. У меня уже есть snapcraft.yaml, который устанавливает инструмент cli. Я пытаюсь понять, что я должен добавить / отредактировать, чтобы я мог вызывать действия Docker.
Кроме того, я пытаюсь понять, если в таком случае Docker должен быть установлен через Snap или пока Docker каким-то образом установлен на машине, все в порядке? Что происходит, когда Docker не установлен?
Из того, что я нашел в Snap Docs, мне нужно добавить к своему snapcraft.yaml интерфейс докера , чтобы он предоставил доступ к Docker сокет deamon, но я не могу найти ресурсов для вызова команд Docker ...
Это мой snapcraft.yaml:
version: '1.0.0'
summary: |
Test CLI and Service
description: |
Some Test Description.
grade: devel
confinement: strict
plugs:
docker-cli:
interface: docker
docker-executables:
interface: content
target: $SNAP/docker-exes
default-provider: docker:docker-executables
parts:
jre:
source-type: tar
source: ./jre-source/zulu11.33.10-sa-jre11.0.4-linux_x64.tar.gz
plugin: dump
test-snap:
source-type: local
source: ./test-snap-source
plugin: dump
apps:
test-snap:
command: docker ps
plugs:
- docker
- docker-executables
- docker-cli
Когда я запускаю тест-оснастку, я получаю "/snap/test-snap/x6/command-test-snap.wrapper: 4: exec: docker: not found"
Спасибо!
Найденный следующим dockerized-app-snap репозиторием на GitHub, который действительно помог мне создать Снимок, которые запускают dockerzied приложение через довольный интерфейс, совместно использованный снимком докера.
Присоединенный мой snapcraft.yaml для любого, кто, пытаясь сделать что-то подобное:
name: my-app
version: '1.0.0'
summary: |
my-app Summary
description: |
Some my-app Description.
grade: devel
confinement: strict
plugs:
docker-cli:
interface: docker
docker-executables:
content: docker-executables
default-provider: docker
interface: content
target: docker-env
parts:
environment:
plugin: dump
source: ./src/
organize:
'docker-wrapper' : bin/
apps:
my-app:
command: docker-wrapper docker <any docker command ps/pull/run>
plugs: [docker-executables, docker-cli]
Можно найти общее объяснение в Поспешных Интерфейсах (разъемы и слоты) здесь Короче говоря, интерфейс состоит из соединения между слотом и разъемом. Слот является поставщиком интерфейса, в то время как разъем является потребителем. В моем случае снимок докера имеет 2 интерфейса, которые он обеспечивает (слоты), которые использует мое-приложение (включается) - интерфейс докера под разъемом докера-cli и довольным интерфейс под разъемом исполняемых файлов докера.
Относительно вопроса, если Докер должен быть установлен с помощью Снимка. Поскольку снимок моего-приложения использует интерфейсы снимка докера, ответ это да. Но я не уверен, является ли это конфликт с докером, установленным на машине. обновит, когда у меня будет ответ.
Надеявшийся я помог кому-то!