【问题标题】:Unable to import image encrypted by ctr-enc无法导入 ctr-enc 加密的图像
【发布时间】:2021-02-22 06:26:19
【问题描述】:

我正在尝试使用 this 教程加密 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

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

【问题讨论】:

    标签: docker azure-container-registry


    【解决方案1】:

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

    我在设备中遇到以下错误

    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] 在要设置存储库的设备以及要在其中运行加密映像的设备的 hosts 文件中添加以下行。将其替换为您的实际 IP

    Ex:- 192.168.0.1  repository.local.com
    

    2] 在 /docker/daemon.json 文件中为您计划运行加密映像的设备添加以下行

     "insecure-registries":["registry.local.com:5000"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 2021-08-08
      • 2015-06-09
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多