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

6 配置映像储存

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

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

  • 付费订阅者可以通过 Docker Hub 创建私用软件源。

  • 使用现场 Docker 注册表可以储存您的组织所用的全部容器映像。

6.1 什么是 Docker 注册表?

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

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

用户界面 (UI)

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

此组件是闭源的。

身份验证组件

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

此组件是闭源的。

储存后端

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

此组件是开源的。

6.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

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

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

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

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

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

6.3 限制

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

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

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