Docker镜像仓库本地化部署教程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Docker镜像仓库本地化部署教程(DTR)
Docker可信镜像仓库服务,是安全、高可用并且支持本地部署的Docker 服务,通常使用DTR 代指。

如果知道Docker Hub 是什么,可以将DTR 理解为私有的Docker Hub,可以在本地部署,并且自行管理。

在安装前有几点需要说明。

如果条件允许,使用专用节点来运行DTR。

在DTR 生产环境节点中绝对不要运行用户工作负载。

在UCP 中,需要运行奇数个DTR 实例。

3 个或者5 个实例有较好的容错性。

生产环境下的推荐配置如下。

∙ 3 个专用UCP 管理节点。

∙ 3 个专用DTR 实例。

∙按应用需求增加工作节点。

∙接下来会在单个节点上完成DTR 的安装和配置。

安装DTR
在UCP 集群中配置首个DTR 实例包括下面几个步骤。

为了完成下面步骤,需要一个用于安装DTR 的UCP 节点和一个监听443 端口的负载均衡,并处于TCP 透传模式,同时在443 端口开启了/health 健康检查。

下图展示了完整架构图。

1) 登录UCP Web 界面,单击Admin > Admin Settings > Docker Trusted Registry。

2) 填写DTR 配置表,如下所示。

∙DTR 外部URL(DTR EXTERNAL URL):设置外部负载均衡器的URL。

∙UCP 节点(UCP NODE):选择希望安装DTR 的节点名称。

∙禁用UCP 的TLS 认证(Disable TLS Verification For UCP):如果使用自签名证书,勾选该复选框。

3) 复制表格底部的长命令。

4) 将命令粘贴到UCP 管理节点。

命令中包含--ucp-node,告诉UCP 需要执行该命令的具体节点。

下面示例中的DTR 安装命令与上图中的配置相符。

示例中假设当前已经在 配置了负载均衡器。

5) 一旦安装完成,就可以通过浏览器访问负载均衡器。

访问后会自动登录DTR,如下图所示。

DTR 已经应用,但尚未为其配置HA。

为DTR 配置高可用
配置多副本的高可用DTR 依赖共享存储。

共享存储可以是NFS 或者对象存储,可以本地部署或者在公有云上部署。

下面的步骤中会采用Amazon S3 Bucket 作为共享存储来完成高可用DTR 配置。

1) 登录DTR 控制台,进入Settings。

2) 选择存储(Storage)标签页,并配置共享存储。

下图展示了如何将位于eu-west-1 可用域中名为deep-dive-dtr 的AWS S3 bucket 存储配置为DTR 的共享存储。

小伙伴在本地不能使用该存储。

DTR 现在配置了共享存储,可以开始增加额外的副本了。

1) 在UCP 集群管理节点运行下面命令。

--ucp-node 参数指定了命令创建新DTR 副本所在的节点。

如果使用自签名证书,必须指定--insecure-tls 参数。

我们需要替换示例中的镜像版本和副本ID。

副本ID 在初始化安装副本的输出内容中可以找到。

2) 按提示输入UCP URL、端口以及管理员证书。

添加成功后,会看到如下信息。

一定要遵循前面的建议来安装副本,保证数量为奇数。

这时需要更新负载均衡的配置信息,这样流量可以发送到新的副本之上。

DTR 现在已经配置了HA,这意味着现在某个副本宕机不会影响服务可用性。

下图展示了高可用DTR 配置。

需要注意,当前负载均衡器会向全部3 个DTR 副本发送流量,也会对全部3 个节点执行健康检查。

全部3 个DTR 副本共享同一个外部存储。

在上图中,负载均衡器和共享存储都是第三方产品,按照单点部署进行展示(非高可用)。

为了保证整体环境的高可用,建议确认这些产品都支持高可用,并且对其内容和配置信息进行备份(例如保证负载均衡器和存储系统原生支持高可用,并且配置了备份策略)。

备份DTR
因为使用了UCP 的缘故,DTR 自带backup 命令,属于安装DTR 所用镜像的一部分。

该备份命令会将分散于多个卷的DTR 配置信息进行备份,包括以下几种。

DTR 配置。

∙仓库原生信息。

∙公证信息。

∙证书。

DTR 自带备份并不支持对镜像的备份功能。

通常镜像保存在高可用的存储后端,依赖非Docker 工具执行自己独立的备份计划。

在UCP 管理节点执行下面命令对DTR 进行备份。

read 命令会提示用户输入UCP 管理账户的密码,并保存到UCP_PASSWORD 变量当中;
第二行告诉Docker 启动新的临时容器来执行备份操作;第三行将UCP 密码设置为容器的环境变量;第四行执行了备份命令;第五行使用自签名证书保证命令可执行;第六行设置UCP 用户名为“admin”;最后一行指定备份文件为当前目录下的ucp.bkp。

按照提示输入UCP URL 和副本ID。

该信息也可以在备份命令中指定。

备份结束后,会在当前工作目录下新增一个名为ucp.bkp 的文件。

该文件应当按照公司的备份策略,由公司备份工具进行统一管理。

从备份恢复DTR
从备份恢复DTR 是下策,只有副本都宕机,并且没有其他方式恢复时才可以尝试。

在只是单副本宕机,其他副本仍然可用的情况下,应当使用dtr join 命令增加新的副本。

如果确定需要从副本恢复,步骤如下。

1) 停止并删除DTR 节点(可能已经停止)。

2) 恢复共享存储中的镜像(可能不需该步骤)。

3) 恢复DTR。

在准备恢复DTR 的节点上执行下面的命令。

当然该节点必须是要恢复的DTR 所在UCP 集群中的一员。

在恢复时需要使用与创建备份相同版本的docker/dtr 镜像。

1) 停止并删除DTR。

按提示输入UCP URL、管理证书以及要删除的副本ID。

如果有多副本,可以多次运行该命令来删除。

2) 如果镜像在共享存储中丢失,需要首先恢复镜像。

3) 使用下面的命令恢复DTR。

需要将第5 行与第6 行中的内容替换为本地环境的值。

因为restore 命令不支持交互式,所以当restore 命令开始执行后,没有提示输入前面的内容。

DTR 现在已经恢复。

UCP 管理节点、工作节点以及DTR 节点需要通过网络互相通信。

下图总结了端口需求。

相关文档
最新文档