我有一个Docker映像和一个cli工具。我想创建一个Snap包,以提取Docker映像并在本地Docker上运行它。 我已经有一个安装cli工具的snapcraft.yaml。我试图了解应该添加/编辑的内容,以便调用Docker操作。
此外,我想了解是否在这种情况下必须通过Snap安装Docker,或者只要以某种方式将Docker安装在计算机上就可以了吗?没有安装Docker会发生什么?
根据我在Snap Docs上找到的内容,我需要将docker interface添加到我的snapcraft.yaml中,以便它可以访问Docker守护进程套接字,但是我找不到任何资源来调用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:未找到”
谢谢!
答案 0 :(得分:1)
在GitHub上找到以下dockerized-app-snap repository,这确实帮助我创建了一个通过docker snap共享的内容界面运行dockerzied应用程序的Snap。
为尝试执行类似操作的任何人附加了我的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]
您可以在Snap Interfaces(plugs and slots) here上找到一般说明 简而言之,接口由插槽和插头之间的连接组成。插槽是接口的提供者,而插头是使用者。 在我的情况下,docker snap有两个供我的应用程序使用(插入)的(插槽)接口-docker-cli插件下的docker接口和docker-executables插件下的内容接口。
关于是否必须通过Snap安装Docker的问题。因为my-app snap使用docker snap接口,所以回答是。但是我不确定它是否与机器上安装的docker冲突。当我有答案时会更新。
希望我帮助了某人!