固定链接 基于滴滴云部署高可用的 Docker 私有仓库

基于滴滴云部署高可用的 Docker 私有仓库

基于滴滴云部署高可用的 Docker 私有仓库

为什么需要 Docker 私有仓库

虽然 Docker 官方提供了 Docker 镜像仓库服务 ,但是由于网络原因或者公司内部的原因我们需要一个私有的 Docker 仓库来管理自己的 Docker 镜像。

高可用 Docker 私有仓库架构的介绍

本例中的 Docker 私有仓库是基于开源的软件 Harbor 来搭建的,只对 Harbor 自带的 Nginx 做了替换(推荐使用 Tengine)。集群的服务器使用了两台滴滴云的 DC2 实例。

  • SLB 负责提供带外的服务地址以及 DC2 实例的负载均衡。
  • Nginx 对 Harbor-UI 和 Registry 做负载均衡以及健康检查,确保一台 DC2 上面的组件不可用时不影响整体的服务。
  • Harbor-UI 提供 Web 和生成鉴权 Token 的功能。
  • Registry 提供了 Docker 镜像的管理功能。
  • Harbor-Jobservice 异步处理 job 任务。
  • Harbor-Adminserver 配置管理。
  • Harbor-Log 日志收集。
  • Redis 用于数据的缓存和消息队列的实现。
  • MySQL 存储用户信息和仓库信息。
  • S3 存储 Docker 镜像。

环境准备

滴滴云官网依次购买以下组件:

  • 两台 DC2 实例,规格无需太大,需要带 EIP 方便下载 Harbor。
  • Redis 云弹性缓存。
  • MySQL 云数据库,设置数据库的账号和密码。
  • S3 对象存储。

服务部署

登陆滴滴云服务器进行如下操作 ( 本例使用的操作系统版本为 Centos7.4 ):

1. 安装部署 Docker、Docker-Compose

2. 下载 Harbor

3. 修改 Harbor.cfg 配置文件

4. 修改 Nginx 配置文件(Nginx 的版本需要支持 check 模块)

5. 修改 Docker-Compose.yml 配置文件

6. 安装 Harbor

7. 鉴权公钥私钥同步

用一台机器上的 common/config/ui/private_key.pemcommon/config/registry/root.crt 文件替换另外一台机器上的文件。否则会导致集群内鉴权失败。

8. 配置滴滴云 SLB 和安全组规则

  • SLB 的配置:将两台云主机添加到 SLB 的监听中,端口设置为 80。

  • 安全规则设置:安全组中新增 8080 和 5000 端口的入方向规则,授权对象为:10.0.0.0/8

9. 服务验证

  • 浏览器中输入 SLB_IP 即可访问 Harbor 的 Web 服务。
  • 通过 Web 页面注册用户、创建项目即可通过 docker logindocker push 命令上传 Docker 镜像了。

本文作者:杜建成

您的留言将激励我们越做越好