跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 容器指南 / 配置映像储存
适用范围 SUSE Linux Enterprise Server 15 SP3

5 配置映像储存

在创建自定义映像之前,需要确定映像的储存位置。最简单的解决方案是将映像推送到 Docker Hub。默认情况下,推送到 Docker Hub 的所有映像都是公用映像。切勿发布敏感数据或未授权的软件供公众使用。

您可以通过以下方式限制对自定义容器映像的访问:

  • 付费订阅者可以通过 Docker Hub 创建私用储存库。

  • 使用现场 Docker 注册表可以储存您的组织所用的全部容器映像。可将此方法与 Portus 结合使用来保护注册表。

本章介绍第二种做法:设置一个现场 Docker 注册表并将其与 Portus 结合使用。

5.1 什么是 Docker 注册表?

Docker 注册表是用于储存和检索容器映像的开源平台。运行本地 Docker 注册表实例可以彻底避免使用 Docker Hub。

Docker Hub 也会使用 Docker 注册表。但从用户的角度而言,Docker Hub 由以下组件构成:

用户界面 (UI)

用户使用浏览器访问的部分。在 UI 中可以手动或使用搜索功能方便地浏览 Docker Hub 的内容。UI 可用来按不同的用户创建组织。

此组件是闭源的。

身份验证组件

此组件用于保护 Docker Hub 中储存的映像。它会验证所有推送、提取和搜索请求。

此组件是闭源的。

储存后端

将映像上传到以及从中下载映像的位置。它由 Docker 注册表提供。

此组件是开源的。

5.2 运行 Docker 注册表

SUSE 注册表提供了一个容器映像,可用于将本地 Docker 注册表作为容器运行。在启动容器之前,请创建包含以下示例配置的 config.yml 文件:

version: 0.1
log:
  level: info
storage:
  filesystem:
    rootdirectory: /var/lib/docker-registry
http:
  addr: 0.0.0.0:5000

另外,创建一个空目录以映射容器外部的 /var/lib/docker-registry 目录。此目录用于储存容器映像。

运行以下命令以从 SUSE 注册表提取注册表容器映像,并启动一个可以通过端口 5000 访问的容器:

podman run -d --restart=always --name registry -p 5000:5000 \
-v /PATH/config.yml:/etc/docker/registry/config.yml \
-v /PATH/DIR:/var/lib/ \ docker-registry registry.suse.com/sles12/registry:2.6.2

为了更方便地管理注册表,请创建相应的系统单元:

root #  podman generate systemd registry >  \
 /etc/systemd/system/suse_registry.service

启用并启动注册表服务,然后校验其状态:

root # systemctl enable suse_registry.service
root # systemctl start suse_registry.service
root # systemctl status suse_registry.service

有关 Docker 注册表及其配置的更多细节,请参见 https://docs.docker.com/registry/ 上的官方文档。

5.3 限制

Docker 注册表存在两项主要限制:

  • 它缺少任何形式的身份验证。这意味着,有权访问 Docker 注册表的任何人都可以向它推送映像以及从中提取映像,包括重写现有映像。

  • 无法查看哪些映像已推送到 Docker 注册表。您需要手动记下其中储存的映像。此外,它没有搜索功能。安装 Portus 可以解决这些限制。

5.4 Portus

Portus 是 Docker 注册表的身份验证服务和用户界面。它是 SUSE 创建的一个开源项目,旨在解决 Docker 注册表本地实例的限制。将 Portus 与 Docker 注册表结合使用可以获得一个安全且随时可在企业中使用的本地版 Docker Hub。

Portus 作为 SUSE 容器注册表中的一个容器映像提供给 SUSE Linux Enterprise Server 客户使用。例如,要提取 SUSE Linux Enterprise Server 12 映像的 2.4.3 标记,请运行以下命令:

tux > podman pull registry.suse.com/sles12/portus:2.4.3

除了 SUSE 容器注册表中提供的官方 Portus 映像版本以外,Docker Hub 上也提供了一个社区版本。不过,我们强烈建议 SUSE Linux Enterprise Server 客户使用官方的 Portus 映像。面向 SUSE Linux Enterprise Server 客户的 Portus 映像的代码与社区版本中的代码相同。因此,http://port.us.org/docs/deploy.html 中的设置说明适用于这两个映像。