跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / 容器指南 / 配置映像存储设备
适用范围 容器指南

8 配置映像存储设备

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

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

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

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

8.1 什么是 Docker 注册表?

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

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

用户界面 (UI)

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

身份验证组件

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

存储后端

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

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

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

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

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

> sudo systemctl enable suse_registry.service
> sudo systemctl start suse_registry.service
> sudo systemctl status suse_registry.service

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

8.3 限制

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

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

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