docker - 无法导入 ctr-enc 加密的图像
问题描述
我正在尝试使用本教程加密 docker 图像。我有存储在 Azure 容器注册表中的图像,我想加密它们。
由于 ctr-enc 环境不支持来自 Azure CR 的图像,因此我从 Azure CR 中提取图像,将其标记到本地注册表(sudo docker tag "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
我只想知道这个流程是否有效,我是否遗漏了什么或者整个流程是错误的。我对此不太了解,因此将不胜感激。
解决方案
我在以下步骤的帮助下解决了错误。尝试重新创建流程,我使用此链接设置我的本地存储库。从 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
在拉取命令本身中提供密钥后,图像被下载并且运行没有任何错误。拉取命令示例:sudo ctr-enc images pull --plain-http=true --key mykey.pem registry.local.com:5000/encrypted-image/test:0.1
要点: 1] 在要设置存储库的设备以及要在其中运行加密映像的设备的 hosts 文件中添加以下行。将其替换为您的实际 IP
Ex:- 192.168.0.1 repository.local.com
2] 在 /docker/daemon.json 文件中为您计划运行加密映像的设备添加以下行
"insecure-registries":["registry.local.com:5000"]
推荐阅读
- php - 上传文件后运行 PHP 代码
- amazon-web-services - 使用 AWS Cognito 连接到基于 VPC 的 Kibana
- mixins - for 什么时候调用迭代器方法?
- python - 保存相关变量的 Pythonic 方式?
- python - anaconda 导航器未打开并出现错误 active.bat
- python - 在保留空格分隔符的同时拆分字符串
- java - 原因:com.businessobjects.bcm.BCM 处的 java.lang.ExceptionInInitializerError。
(BCM.java:1144) - git - 如何将现有的非空目录转换为 Git 工作目录并将文件推送到远程分支
- php - 在 PHP 中使用 PDO 动态构建多级菜单
- google-cloud-functions - 如何使用 Actionsdk 创建自定义意图和调用助手意图?