IBM z/OS 容器平台图像

IBM® Semeru Runtime® Certified Edition for z/OS®, 17 的容器镜像可在 IBM 容器注册表中找到。 您可以拉取 17 z/OS 容器 Semeru 镜像,并通过加密哈希值验证镜像。 图片都有签名,您可以验证签名。

运行 Semeru 17z/OS 容器镜像

要运行 17 z/OS 容器 Semeru 镜像,您必须具备以下配置:

容器镜像 Semeruz/OS 17 托管在 命名 icr.io/zoscp/ibm-semeru-runtimesIBM Cloud® Container Registry 空间下。

注意: 要获取 17 z/OS 容器 Semeru 镜像,请通过 提交 https://www.ibm.com/mysupport/ 工单,选择" z/OS Container Platform"(PID: 5655-MC3 )作为产品选项。 请将<key>替换为您收到的授权密钥值。
podman login -u iamapikey -p <key> icr.io
您可以使用以下命令从 IBM Cloud Container Registry 提取 z/OS 的容器镜像:
podman pull icr.io/zoscp/ibm-semeru-runtimes:certified-17-jdk-zos
注意: 该图片需要 BPX.FILEATTR.APF 的读取权限。 建议使用具有正确权限的图像管理员 ID 将 Java™ 图像调入 /var/lib/podman/storage ,供 Podman 的其他用户用于 IBM z/OS ( Podman )。 更多信息,请参见 https://www.ibm.com/docs/en/zoscp/1.1.0?topic=platform-pushing-pulling-from-container-registry.

随后,您可以按照下一节所述的方法验证图像z/OSSemeru 17的签名。

验证容器镜像 z/OS 17 Semeru 的签名

要验证容器镜像的签名,您必须进行以下设置:
  • Linux® 环境
  • gpg (通过 Linux 发行版的软件包安装)
  • skopeo(通过 Linux 发行版的软件包进行安装)
  1. 用于验证已签名 z/OS 容器镜像的 Linux 机器上必须存在公钥。 要创建公用密钥,请将以下文本块完全复制到文本编辑器中,并将其另存为 semeru-runtimes-public-gpgkey.gpg
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    
    mQINBGQbR9wBEADR//wuh48qCwcrHnGrURseqEG7binLYxb5G4fpOQd9tH/7dLIC
    iU7HyoFbMmGiPS1BP7sJ+gn8Kb1dU5IM9ZpBAO4LlMLCm7g2qyc+bkVqQKYezTBa
    fvpgDJhZ+e7b4P1vYkx1Ex9XpDd27S/o4aULGnmPjQ9SMtT3qlZf2b59clN9x30Y
    VXM2qoRRrpFAkhkoEYQIboY0644TatrVt5CNAQiECdZBn/c0z5op0b42JWTeXvAl
    D/FEOWhilSyjSeY7c8ANvP9q3Ur0k18wBCPt47vhXWf5/h9gbBxNtv0p+vKVNVKQ
    8CJdPHmylWdtHyWQsNkxFwGZ4EUzhP6YxxV3JQwy5eNnHB8Mt1Xb8LGhqbRdxSBE
    0dlHeQIzzAknex6mhAtKyUxJ/+1mxcU1w+kWiYSBrWw71eIEEKhIWGszqW9JND3F
    PJ0tNluTlkMJSlboK457/8rKB/NY5qgqDLTaxF6ZSjZUI7rgb1FcGEfV0Te3l0cO
    EdUdjg4fM2DXreVZd54JBcp2bEUdcQOmolUIo4wFTNjQawF6ApPmb7qzq5SV7EZj
    Cup4Jg4rE/SJhtOVUM4BIYkQ2SLOo4dIqAdFwOrHogXVm1neUJgMJ5US4tply18C
    RJCt9VbGTmiFzQkxMgAKXhi9QFuvET1Xc5GUCzkOgoXSoH/IvdeUl8eUJwARAQAB
    tDJJQk0gU2VtZXJ1IFJ1bnRpbWVzIFNpZ25pbmcgS2V5IDxwc2lydEB1cy5pYm0u
    Y29tPokCOgQTAQgAJAUCZBtH3AIbDwULCQgHAgYVCgkICwIEFgIDAQIeAQUJAAAA
    AAAKCRAMOZfZio1FgmNYEACjElnUd7E7n71AYoNTD27+S7Vl8YTyzGkVUVeb1c+3
    L3ASZ+kadEMKLepEYsCjGVqQPNXoeosg2YQ4ziY9IlGj5fvoFMuIqx6qisuL9xjM
    HaL3xI9aBCX9C/GtZd8DvvvcmglDb8tbOyLAq6tnkhAP1EEaH9cw2jY8V3zH7k99
    xqFso+g8GwaEYA7OGyjlvC2uy4wExo1MRodtv+0cxUmKZWoFqu9fNH7a3C9VPBtr
    VX5rRWoRJrcjI0Q6OxqximKs7P9H2S9kZtL7Zm4kxh/ZrSWPXlbC8/brs8TDdiga
    oFIDmmlK0rCWpsupna69DqS5aBNEO9WOYH8cAG3aw1MsHV0CSLAYZ9Iez7fb5uYx
    FClg5mNYj3vWmYRsiLCyaNrhJapCJyPWRCx6U5592yDkCHM9z0WJbGIweEZtfXXB
    KCdGW/LWweHYI0xs3BlVOfkg98RAxzMxr3ut7oAa/J0BsqbyV+VMm+jM/Tm/nReG
    JTucOa/s+z4MFyP5cQgJH3JUyrhV73vlUKqEqQaoWUTQjVM4Pp42Ew67lFlafoGZ
    i7HB1kG+Tq/Od3vNugSM+SzmC+oxcEbbPxEJt2IU25e4ncsiJSIIb51ZAsysE2Ob
    YL0Ace+djFYlq9wVG39w9tlgHn094GOsf60X6urdIL6cK/haHGmLyiOBPDhZ9wyd
    NA==
    =brr/
    -----END PGP PUBLIC KEY BLOCK-----
  2. 在单独的 Linux 系统上导入公钥,以验证容器镜像的签名:
    gpg --import semeru-runtimes-public-gpgkey.gpg
  3. 使用以下命令计算指纹:
    fingerprint=$(gpg --fingerprint --with-colons | grep fpr | tr -d 'fpr:')

    此命令将密钥的指纹存储在环境变量 fingerprint中,此命令用于验证签名。 退出 shell 会话时,将删除该变量。 您可以在下次登录时重新运行该命令进行设置。

  4. 为镜像创建一个目录,然后使用 skopeo 命令将镜像提取到本地存储中:
    mkdir images
    skopeo copy docker://icr.io/zoscp/ibm-semeru-runtimes:certified-17-jdk-zos dir:./images

    你可以先进行身份验证,然后复制 skopeo ,或者直接使用 --src-creds iamapikey:<entitlement key> 拉取 docker 镜像。

    skopeo 复制命令会将图像下载为一组文件,并将其放置在图像目录(或您选择的其他目录)中。
    • 名为 images/manifest.json 的清单文件
    • 名为 images/signature-1 的签名文件

    在下一步 (在验证签名的命令中) 中同时引用这两个文件。

  5. 验证签名:
    skopeo standalone-verify ./images/manifest.json icr.io/zoscp/ibm-semeru-runtimes:certified-17-jdk-zos ${fingerprint} ./images/signature-1
    您将在成功验证签名时获得类似于以下消息的确认:
    Signature verified with <FINGERPRINT> , digest sha256:0000000000000000000000000000000000000000000000000000000000000000 
拉取映像后,该映像将在服务器上可用。 您可以使用以下命令来检查详细信息:
$ podman images
详细信息包括从中拉取映像的存储库名称空间以及特定的拉取映像详细信息:
REPOSITORY           TAG        IMAGE ID      CREATED      SIZE
      icr.io/zoscp/ibm-semeru-runtimes     17       8ef69ad2a6bc   11 days ago   644 MB

已知限制和变通方法

z/OS 容器镜像的使用存在以下限制,需要通过变通方法解决这些限制:

  • 在 z/OS Container Platform 实例中,如果 java.nio.File.getFileStore() API 查询托管在绑定挂载文件系统上的文件,可能会抛出 java.io.IOException: Device not found 异常。 一种可能的解决方法是将文件迁移到临时文件系统 (tmpfs)。
  • _BPXK_AUTOCVT=ON 在 z/OS 基本映像和 Java 容器映像中设置。 此 ON 设置可能会为 java/nio API 引入不同的编码处理行为。 要避免不同的编码处理行为,请将 _BPKX_AUTOCVT=OFF 设置为与非容器化 z/OS 环境上的缺省设置相匹配。