跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / 容器指南 / 注册和联机储存库
适用范围 容器指南

5 注册和联机储存库

5.1 SLE Containers 模块

要在 SUSE Linux Enterprise Server 上使用容器,首先必须启用 SLE Containers 模块。此模块包含围绕容器的软件包,其中包括容器引擎以及与容器相关的核心工具,例如本地注册表。有关 SLE 模块的详细信息,请参见 https://documentation.suse.com/sles/html/SLES-all/article-modules.html

常规 SLES 订阅包含免费的 SLE Containers 模块。

5.1.1 使用 YaST 图形界面启用 Containers 模块

  1. 启动 YaST,然后选择软件 > 软件储存库

  2. 单击添加打开附加产品对话框。

  3. 注册服务器中选择扩展和模块,然后单击下一步

  4. 在可用扩展和模块列表中选择“Containers Module 15 SP4 x86_64”,然后单击下一步。这会将 Containers 模块及其储存库添加到系统中。

  5. 如果您使用 Repository Mirroring Tool,请更新 RMT 服务器上的储存库列表。

5.1.2 使用 SUSEConnect 从命令行启用 Containers 模块

您也可以使用以下命令添加 Containers 模块

> sudo SUSEConnect -p sle-module-containers/15.4/x86_64

5.2 container-suseconnect

5.2.1 什么是 container-suseconnect?

container-suseconnect 是 Zypper 随附的所有基本容器映像中的一个可用插件。当该插件检测到主机的 SUSE Linux Enterprise Server 注册身份凭证时,它会使用这些身份凭证来向容器授予对 SUSE Linux Enterprise 储存库的访问权限。这包括不属于免费 SLE_BCI 储存库的其他模块和以前的软件包版本。

5.2.2 如何在 SLES 和 openSUSE 上使用 container-suseconnect

如果您正在使用 Docker 运行已注册的 SLES 系统,container-suseconnect 会自动检测和使用订阅,而无需您执行任何操作。

在包含 Docker 的 openSUSE 系统上,您必须将文件 /etc/SUSEConnect/etc/zypp/credentials.d/SCCcredentials 从已注册的 SLES 计算机复制到本地计算机。请注意,仅当您使用 RMT 管理注册身份凭证时才需要 /etc/SUSEConnect 文件。

5.2.3 如何在非 SLES 主机上使用 container-suseconnect 或将其与 Podman 和 Buildah 配合使用

需要一个已注册的 SLES 系统才能在非 SLES 主机上使用 container-suseconnect 或将其与 Podman 和 Buildah 配合使用。此系统可以是物理机、虚拟机或者安装并注册了 SUSEConnect 的 bci-base 容器。

如果您不使用 RMT,请将 /etc/zypp/credentials.d/SCCcredentials 复制到开发计算机。否则请复制 /etc/zypp/credentials.d/SCCcredentials/etc/SUSEConnect 文件。

可以使用以下命令获取 SCCcredentials(请将 REGISTRATION_CODE 替换为您的 SCC 注册码)

podman run --rm registry.suse.com/suse/sle15:latest bash -c \
    "zypper -n in SUSEConnect; SUSEConnect --regcode REGISTRATION_CODE; \
     cat /etc/zypp/credentials.d/SCCcredentials"

如果您正在运行基于 SLE BCI 的容器,请将 SCCcredentials(以及可选的 /etc/SUSEConnect)挂载到正确的目标中。以下示例说明如何在当前工作目录中挂载 SCCcredentials

podman run -v /path/to/SCCcredentials:/etc/zypp/credentials.d/SCCcredentials \
    -it --pull=always registry.suse.com/bci/bci-base:latest

请不要将 SCCcredentialsSUSEConnect 文件复制到容器映像中,以免无意中将这些文件添加到最终映像中。请改用机密,因为它们仅适用于单个层,而不是构建的映像的一部分。为此,请将 SCCcredentials(以及可选的 SUSEConnect)的副本放到文件系统上的某个位置,并修改调用 Zypper 的 RUN 指令,如下所示:

FROM registry.suse.com/bci/bci-base:latest

RUN --mount=type=secret,id=SUSEConnect \
    --mount=type=secret,id=SCCcredentials \
    zypper -n in fluxbox

Buildah 支持通过 --secret 标志装载机密,如下所示:

buildah bud --layers --secret=id=SCCcredentials,src=/path/to/SCCcredentials \
    --secret=id=SUSEConnect,src=/path/to/SUSEConnect .
注意
注意:已知问题

每次调用 Zypper 时,container-suseconnect 都会自动运行。如果未使用已注册的 SLES 主机,您可能会看到以下错误消息:

> zypper ref
Refreshing service 'container-suseconnect-zypp'.
Problem retrieving the repository index file for service 'container-suseconnect-zypp':
[container-suseconnect-zypp|file:/usr/lib/zypp/plugins/services/container-suseconnect-zypp]
Warning: Skipping service 'container-suseconnect-zypp' because of the above error.

可以忽略该消息,因为它仅表明 container-suseconnect 无法检索您的 SUSE Customer Center 身份凭证,因此无法添加完整的 SLE 储存库。您仍然拥有对 SLE_BCI 储存库的完全访问权限,并且可以继续按预期使用容器。

5.2.4 将模块添加到容器或容器映像

container-suseconnect 允许您自动将 SLE 模块添加到容器或容器映像。可添加哪些模块由环境变量 ADDITIONAL_MODULES 决定,该变量包含逗号分隔的模块名称列表。在 Dockerfile 中,可以使用 ENV 指令完成此操作,如下所示:

FROM registry.suse.com/bci/bci-base:latest
ENV ADDITIONAL_MODULES sle-module-desktop-applications,sle-module-development-tools

RUN --mount=type=secret,id=SCCcredentials zypper -n in fluxbox && zypper -n clean