docker 镜像:harbor 项目学习

Tags: docker 

本篇目录

说明

Architecture Overview of Harbor 介绍了 harbor 每个组件的用途:

proxy: 反向代理,将请求代理到 harbor 的自服务
core:  harbor 的核心功能实现,操作页面上提供的绝大多数功能
       认证授权、配置管理、项目管理、配额管理、tag 管理、镜像扫描、webhook等
job:   任务队列
log:   日志收集
gc:    gc 管理
chart:     chart存放管理
registry:  docker镜像存放管理
notary:    内容鉴真

docker login 的过程:

  1. proxy 收到请求,转发给 registry;
  2. registry 配置了 token 认证,返回 401 告知 docker client 到 core 服务获取 token;
  3. docker client 发送用户名密码到 core 获取 token;
  4. core 解析用户密码完成认证。

编译构建

harbor 部署文件是一个 docker-compose.yml,各个组件被打包了镜像中,关键是找到 Docker 镜像的构建过程。

harbor v1.9.4 的编译构建过程:

$ docker pull golang:1.12.12
# NOTARYFLAG=true 和 CLAIRFLAG=true 可选
$ make install GOBUILDIMAGE=golang:1.12.12 COMPILETAG=compile_golangimage

查看 Makefile 可以知道镜像的构建文件位于 make/photon 目录中:

▾ make/
  ▸ kubernetes/
  ▸ migrations/
  ▾ photon/
    ▸ chartserver/
    ▸ clair/
    ▸ common/
    ▸ core/
    ▸ db/
    ▸ jobservice/
    ▸ log/
    ▸ nginx/
    ▸ notary/
    ▸ portal/
    ▸ prepare/
    ▸ redis/
    ▸ registry/
    ▸ registryctl/
      Makefile
    checkenv.sh*
    harbor.yml
    install.sh*
    prepare*
    pushimage.sh*

编译结束后,可以直接在 make 目录启动 harbor:

$ cd make
$ ./install.sh

proxy 代理

部署 harbor 的时候,会生成一个 common 目录,这个目录中存放的是各个组件的配置文件:

▾ common/config/
  ▸ core/
  ▸ db/
  ▸ jobservice/
  ▸ log/
  ▾ nginx/
    ▸ conf.d/
      nginx.conf
  ▸ registry/
  ▸ registryctl/

nginx/conf.d/nginx.conf 就是 nginx 使用转发配置:

 location / {
   proxy_pass http://portal/;
   ...
 location /c/ {
   proxy_pass http://core/c/;
   ...
 location /api/ {
   proxy_pass http://core/api/;
   ...
 location /chartrepo/ {
   proxy_pass http://core/chartrepo/;
   ...
 location /v1/ {
   return 404;
   ...
 location /v2/ {
   proxy_pass http://core/v2/;
   ...
 location /service/ {
   proxy_pass http://core/service/;
   ...
 location /service/notifications {
   return 404;

参考

  1. 李佶澳的博客
  2. Architecture Overview of Harbor
  3. harbor compile guide

推荐阅读

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作

友情链接:  系统软件  程序语言  运营经验  水库文集  网络课程  微信网文  发现知识星球