Docker Registry 是一个支持共享 Docker 镜像的服务器端应用程序。公共注册表托管在 Docker 中心 。如果由于公司政策、防火墙限制等而无法访问公共托管注册表,您可以部署私有注册表。注册表代码是开源的,可根据 Apache License 获得。请注意,私有注册表没有像公共托管注册表一样的 Web 用户界面。私有注册表是一个应用程序,会提供注册表 API 供 Docker 引擎处理镜像。

本文将介绍如何在运行 Red Hat Enterprise linux (RHEL) 7.1 LE Linux 发行版的 OpenPower 服务器上设置一个具有 TLS 和 HTTP 身份验证功能的 Docker 私有注册表(2.x 版)。除了与在 RHEL 上安装注册表程序包相关的指令之外,这些指令也适用于 OpenPower 服务器上运行的其他大部分 Linux 发行版(Ubuntu、Fedora 等)。

可用性

您可以在以下地址获取最新的 Docker 注册表(2.x 版)的源代码: https://github.com/docker/distribution 。

在面向 Intel 服务器和 PowerPC 服务器的 RHEL 和 Fedora 上,2.x 版注册表包名为 docker-distribution。 在面向 Intel 和 PowerPC 服务器的 Ubuntu 上,2.x 版注册表包名为 docker-registry。

下表列出了针对 PowerPC LE (ppc64le) 平台的相关包的位置。

Linux 发行版 包位置 Fedora 23 或更高版本 Distro 存储库 Ubuntu 16.04 Distro 存储库 RHEL 7.X University of Campinas ( Unicamp ) SLES 12 SPX Distro 存储库

1

将 Docker 私有注册表包安装在 RHEL LE 上

针对 RHEL 7.1 LE 预先编译的 Docker 和 Docker 注册表(2.1 版)的程序包可从 University of Campinas (unicamp) 存储库获得 ( ftp://ftp.unicamp.br/pub/linuxpatch/docker-ppc64/ )。请注意,这些程序包是按原样提供的。

使用以下命令,将 unicamp 存储库添加到您的系统中: # cat > /etc/yum.repos.d/unicamp-docker.repo <<EOF [unicamp-docker] name=Unicamp Repo for docker Packages baseurl=http://ftp.unicamp.br/pub/ppc64el/rhel/7_1/docker-ppc64el/ enabled=1 gpgcheck=0 EOF 安装程序包: # yum install -y docker-distribution 在其他 Linux 发行版上安装 Docker 私有注册表包的说明 在 Fedora for OpenPower 服务器上,2.x 版的注册表包名为 docker-distribution。 在面向 OpenPower 的 Ubuntu 上,2.x 版的注册表包名为 docker-registry。

安装您的发行版的对应程序包;无论采用什么样的发行版或服务器,剩余指令都是相同的。

2

配置存储

下载和安装 Docker 注册表包后,您需要为镜像配置存储位置。

创建一个目录来存储镜像。无论是在本地磁盘还是在外部磁盘上,都可以在指定服务器上的任何挂载点上创建该目录。在此示例中,/data/ 是磁盘上一个用于存储 Docker 镜像的单独分区。 # mkdir /data/registry_data 使用 htpasswd 命令创建 HTTP 访问控制文件。以下命令将会安装 httpd-tools 包(其中包含 htpasswd 工具),并为用户 regimguser 创建一个文件 registry_passwd。根据您的需求来替换文件名和用户名。选项 -B 用于对密码执行 bcrypt 加密。 # yum install -y httpd-tools # htpasswd -Bc /etc/registry/registry_passwd regimguser 请注意,在基于 RHEL 的系统上, htpasswd 包含在 httpd-tools 包中,在基于 Ubuntu 的系统上,它包含在 apache2-utils 中。

3

创建注册表配置文件

以下各小节将介绍如何创建注册表配置文件。

创建一个使用 TLS 保护注册表的证书,并将它复制到所有 Docker 主机。确保在生成证书时使用了注册表 FQDN 作为 CN。 # mkdir /certs/ # openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/domain.key -x509 -days 365 -out /certs/domain.crt Generating a 4096 bit RSA private key ..........................................................................................++ [snip] 将证书复制到所有 Docker 主机,将它放在特定的路径下,如下所示: # mkdir -p /etc/docker/certs.d/registry.kube.com:5000/ # cp domain.crt /etc/docker/certs.d/registry.kube.com:5000/ca.crt 在操作系统级别上信任该证书并更新 CA 列表。不同 Linux 发行版的指令也会有所不同。 在 RHEL 和 Fedora 上,运行以下命令: # cp domain.crt /etc/pki/ca-trust/source/anchors/registry.kube.com.crt # update-ca-trust 在 Ubuntu 上,运行以下命令: # cp domain.crt /usr/local/share/ca-certificates/registry.kube.com.crt # update-ca-certificates 重新启动 Docker 守护进程: # service docker restart

4

启动注册表服务器

使用以下命令行启动注册表服务器:

# REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt REGISTRY_HTTP_TLS_KEY=/certs/domain.key screen -dmS registry registry /etc/registry/config.yml

REGISTRY_HTTP_TLS_CERTIFICATE 和 REGISTRY_HTTP_TLS_KEY 也可在注册表配置文件中指定。私有注册表的默认配置文件可在 /etc/registry/config.yml 中找到。关于可用配置选项的细节可在以下位置找到: https://docs.docker.com/registry/configuration/

以下是一段示例配置:

# cat /etc/registry/config.yml version: 0.1 storage: filesystem: rootdirectory: /data/registry_data delete: enabled: true http: addr: registry.kube.com:5000 host: https://registry.kube.com:5000 tls: certificate: /certs/domain.crt key: /certs/domain.key auth: htpasswd: realm: basic-realm path: /etc/registry/registry_passwd

运行以下命令来启动注册表服务器:

# screen -dmS registry registry /etc/registry/config.yml

5

验证对注册表服务器的访问

从任何 Docker 主机,确认您可以登录到注册表服务器。使用通过 htpasswd 工具创建的 userid 和密码。

# docker login https://registry.kube.com:5000

您现在已完成设置,可以在您的环境中使用 Docker 私有注册表了。

联络

IBM Linux Technology Center (LTC) 是一个 IBM 开源软件开发人员团队,他们与 Linux 开源开发社区进行了合作。LTC 是一个 Linux 技术能力中心。请联系我们。

本文系统(windows)相关术语:三级网络技术 计算机三级网络技术 网络技术基础 计算机网络技术

主题: Docker服务器LinuxUbuntuGIS开源RYTIIBM需求
分页:12
转载请注明
本文标题:设置一个具有基本 HTTP 身份验证支持的 Docker 私有注册表
本站链接:http://www.codesec.net/view/481333.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(windows) | 评论(0) | 阅读(32)