无法导入ctr-enc加密的图片

Unable to import image encrypted by ctr-enc

我正在尝试使用 this 教程加密 docker 图像。 我有图像存储在 Azure 容器注册表中,我想加密它们。

由于 ctr-enc 环境不支持来自 Azure CR 的图像,因此我从 Azure CR 中提取图像,将其标记到本地注册表(sudo docker 标记“azure-cr-image-name”localhost:5000/test:0.1) 并推送它(sudo docker push localhost:5000/test:0.1) 然后从本地注册表中将其拉入 ctr-enc。

所有步骤都正常。图像成功运行,因此我将其导出到 tar 文件。 当我尝试在任何其他设备中导入 tar 文件时出现错误。 报错如下

unpacking localhost:5000/test:0.1 (sha256:7b60c337c1d319c682369508673f8da65ce027cd95917d80abec71c753f90341)...INFO[0119] apply failure, attempting cleanup             error="failed to extract layer sha256:0447c1aa276497ad5424dd1f8597b7f667126d868489277bab7aea547a4aa982: mount callback failed on /var/lib/containerd/tmpmounts/containerd-mount138280154: archive/tar: invalid tar header: unknown" key="extract-395814385-sMwu sha256:0447c1aa276497ad5424dd1f8597b7f667126d868489277bab7aea547a4aa982"
ctr: failed to extract layer sha256:0447c1aa276497ad5424dd1f8597b7f667126d868489277bab7aea547a4aa982: mount callback failed on /var/lib/containerd/tmpmounts/containerd-mount138280154: archive/tar: invalid tar header: unknown

我只想知道这个流程是否有效,我是否遗漏了什么或者整个流程是错误的。我对此不太了解,因此将不胜感激。

我通过以下步骤解决了错误。 尝试重新创建流程,我使用 this link 来设置我的本地存储库。 从 acr 中拉取镜像,对其进行加密并将其推送到本地注册表,然后开始将加密镜像从本地注册表拉取到其他设备

我在设备中遇到以下错误

unpacking linux/arm64/v8 sha256:cfd940f7d5d6a6817e8d4f4a811a27263fa11dc00507ebf638ff24be703e5320...
INFO[0293] apply failure, attempting cleanup             error="failed to extract layer sha256:0447c1aa276497ad5424dd1f8597b7f667126d868489277bab7aea547a4aa982: call to DecryptLayer failed: missing private key needed for decryption\n: unknown" key="extract-20510027-zCdy sha256:0447c1aa276497ad5424dd1f8597b7f667126d868489277bab7aea547a4aa982"
ctr: failed to extract layer sha256:0447c1aa276497ad5424dd1f8597b7f667126d868489277bab7aea547a4aa982: call to DecryptLayer failed: missing private key needed for decryption
: unknown

在 pull 命令本身中提供密钥后,图像已下载并且 运行 没有任何错误。 拉命令示例:sudo ctr-enc images pull --plain-http=true --key mykey.pem registry.local.com:5000/encrypted-image/test:0.1

要点: 1] 在要设置存储库的设备的主机文件中添加以下行,以及要在其中 运行 加密图像的设备。换成你的实际IP

Ex:- 192.168.0.1  repository.local.com

2] 在 /docker/daemon.json 文件中为您计划 运行 加密图像

的设备添加以下行
 "insecure-registries":["registry.local.com:5000"]