千家信息网

kubernetes中Harbor有什么用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了kubernetes中Harbor有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一:简介Harbor是一个用
千家信息网最后更新 2026年10月31日kubernetes中Harbor有什么用

这篇文章主要介绍了kubernetes中Harbor有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一:简介

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。

镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。

docker的registry是用本地存储或者s3都是可以的,harbor的功能是在此之上提供用户权限管理、镜像复制等功能,提高使用的registry的效率。Harbor的镜像拷贝功能是通过docker registry的API去拷贝,这种做法屏蔽了繁琐的底层文件操作、不仅可以利用现有docker registry功能不必重复造轮子,而且可以解决冲突和一致性的问题。

二:Harbor架构


三:主要组件

  • Proxy:对应启动组件nginx。它是一个nginx反向代理,代理Notary client(镜像认证)、Docker client(镜像上传下载等)和浏览器的访问请求(Core Service)给后端的各服务;

  • UI(Core Service):对应启动组件harbor-ui。底层数据存储使用mysql数据库,主要提供了四个子功能:

    • UI:一个web管理页面ui;

    • API:Harbor暴露的API服务;

    • Auth:用户认证服务,decode后的token中的用户信息在这里进行认证;auth后端可以接db、ldap、uaa三种认证实现;

    • Token服务(上图中未体现):负责根据用户在每个project中的role来为每一个docker push/pull命令issuing一个token,如果从docker client发送给registry的请求没有带token,registry会重定向请求到token服务创建token。

  • Registry:对应启动组件registry。负责存储镜像文件,和处理镜像的pull/push命令。Harbor对镜像进行强制的访问控制,Registry会将客户端的每个pull、push请求转发到token服务来获取有效的token。

  • Admin Service:对应启动组件harbor-adminserver。是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候需要加载adminserver的配置;

  • Job Sevice:对应启动组件harbor-jobservice。负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log;

  • Log Collector:对应启动组件harbor-log。日志汇总组件,通过docker的log-driver把日志汇总到一起;

  • Volnerability Scanning:对应启动组件clair。负责镜像扫描

  • Notary:对应启动组件notary。负责镜像认证

  • DB:对应启动组件harbor-db,负责存储project、 user、 role、replication、image_scan、access等的metadata数据。

四:安装

1、安装python-pip
yum -y install epel-release
yum -y install python-pip

2、安装docker-compose
pip install docker-compose
待安装完成后,执行查询版本的命令,即可安装docker-compose
docker-compose version

3.安装Harbor
wget https://storage.googleapis.com/harbor-releases/release-1.4.0/harbor-offline-installer-v1.4.0.tgz
tar -zxvf harbor-offline-installer-v1.4.0.tgz

配置文件 harbor.cfg

点击(此处)折叠或打开

  1. ## Configuration file of Harbor


  2. #The IP address or hostname to access admin UI and registry service.

  3. #DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.

  4. hostname = 120.79.156.135


  5. #The protocol for accessing the UI and token/notification service, by default it is http.

  6. #It can be set to https if ssl is enabled on nginx.

  7. ui_url_protocol = http


  8. #Maximum number of job workers in job service

  9. max_job_workers = 3


  10. #Determine whether or not to generate certificate for the registry's token.

  11. #If the value is on, the prepare script creates new root cert and private key

  12. #for generating token to access the registry. If the value is off the default key/cert will be used.

  13. #This flag also controls the creation of the notary signer's cert.

  14. customize_crt = on


  15. #The path of cert and key files for nginx, they are applied only the protocol is set to https

  16. ssl_cert = /mnt/harbor/cert/server.crt

  17. ssl_cert_key = /mnt/harbor/cert/server.key


  18. #The path of secretkey storage

  19. secretkey_path = /mnt/harbor


  20. #Admiral's url, comment this attribute, or set its value to NA when Harbor is standalone

  21. admiral_url = NA


  22. #Log files are rotated log_rotate_count times before being removed. If count is 0, old versions are removed rather than rotated.

  23. log_rotate_count = 50

  24. #Log files are rotated only if they grow bigger than log_rotate_size bytes. If size is followed by k, the size is assumed to be in kilobytes.

  25. #If the M is used, the size is in megabytes, and if G is used, the size is in gigabytes. So size 100, size 100k, size 100M and size 100G

  26. #are all valid.

  27. log_rotate_size = 200M


  28. #NOTES: The properties between BEGIN INITIAL PROPERTIES and END INITIAL PROPERTIES

  29. #only take effect in the first boot, the subsequent changes of these properties

  30. #should be performed on web ui


  31. #************************BEGIN INITIAL PROPERTIES************************


  32. #Email account settings for sending out password resetting emails.


  33. #Email server uses the given username and password to authenticate on TLS connections to host and act as identity.

  34. #Identity left blank to act as username.

  35. email_identity =


  36. email_server = smtp.mydomain.com

  37. email_server_port = 25

  38. email_username = sample_admin@mydomain.com

  39. email_password = abc

  40. email_from = admin

  41. email_ssl = false

  42. email_insecure = false


  43. ##The initial password of Harbor admin, only works for the first time when Harbor starts.

  44. #It has no effect after the first launch of Harbor.

  45. #Change the admin password from UI after launching Harbor.

  46. harbor_admin_password = Weinong$2017


  47. ##By default the auth mode is db_auth, i.e. the credentials are stored in a local database.

  48. #Set it to ldap_auth if you want to verify a user's credentials against an LDAP server.

  49. auth_mode = db_auth


  50. #The url for an ldap endpoint.

  51. ldap_url = ldaps://ldap.mydomain.com


  52. #A user's DN who has the permission to search the LDAP/AD server.

  53. #If your LDAP/AD server does not support anonymous search, you should configure this DN and ldap_search_pwd.

  54. #ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com


  55. #the password of the ldap_searchdn

  56. #ldap_search_pwd = password


  57. #The base DN from which to look up a user in LDAP/AD

  58. ldap_basedn = ou=people,dc=mydomain,dc=com


  59. #Search filter for LDAP/AD, make sure the syntax of the filter is correct.

  60. #ldap_filter = (objectClass=person)


  61. # The attribute used in a search to match a user, it could be uid, cn, email, sAMAccountName or other attributes depending on your LDAP/AD

  62. ldap_uid = uid


  63. #the scope to search for users, 0-LDAP_SCOPE_BASE, 1-LDAP_SCOPE_ONELEVEL, 2-LDAP_SCOPE_SUBTREE

  64. ldap_scope = 2


  65. #Timeout (in seconds) when connecting to an LDAP Server. The default value (and most reasonable) is 5 seconds.

  66. ldap_timeout = 5


  67. #Verify certificate from LDAP server

  68. ldap_verify_cert = true


  69. #Turn on or off the self-registration feature

  70. self_registration = on


  71. #The expiration time (in minute) of token created by token service, default is 30 minutes

  72. token_expiration = 30


  73. #The flag to control what users have permission to create projects

  74. #The default value "everyone" allows everyone to creates a project.

  75. #Set to "adminonly" so that only admin user can create project.

  76. project_creation_restriction = everyone


  77. #************************END INITIAL PROPERTIES************************


  78. #######Harbor DB configuration section#######


  79. #The address of the Harbor database. Only need to change when using external db.

  80. db_host = mysql


  81. #The password for the root user of Harbor DB. Change this before any production use.

  82. db_password = Weinong$2017


  83. #The port of Harbor database host

  84. db_port = 3306


  85. #The user name of Harbor database

  86. db_user = root


  87. ##### End of Harbor DB configuration#######


  88. #The redis server address. Only needed in HA installation.

  89. redis_url =


  90. ##########Clair DB configuration############


  91. #Clair DB host address. Only change it when using an exteral DB.

  92. clair_db_host = postgres


  93. #The password of the Clair's postgres database. Only effective when Harbor is deployed with Clair.

  94. #Please update it before deployment. Subsequent update will cause Clair's API server and Harbor unable to access Clair's database.

  95. clair_db_password = password


  96. #Clair DB connect port

  97. clair_db_port = 5432


  98. #Clair DB username

  99. clair_db_username = postgres


  100. #Clair default database

  101. clair_db = postgres


  102. ##########End of Clair DB configuration############


  103. #The following attributes only need to be set when auth mode is uaa_auth

  104. uaa_endpoint = uaa.mydomain.org

  105. uaa_clientid = id

  106. uaa_clientsecret = secret

  107. uaa_verify_cert = true

  108. uaa_ca_cert = /path/to/ca.pem



  109. ### Docker Registry setting ###

  110. #registry_storage_provider can be: filesystem, s3, gcs, azure, etc.

  111. registry_storage_provider_name = filesystem

  112. #registry_storage_provider_config is a comma separated "key: value" pairs, e.g. "key1: value, key2: value2".

  113. #Refer to https://docs.docker.com/registry/configuration/#storage for all available configuration.

  114. registry_storage_provider_config =

配置文件docker-compose.yml

点击(此处)折叠或打开

  1. version: '2'

  2. services:

  3. log:

  4. image: vmware/harbor-log:v1.4.0

  5. container_name: harbor-log

  6. restart: always

  7. volumes:

  8. - /mnt/harbor/log/:/var/log/docker/:z

  9. - ./common/config/log/:/etc/logrotate.d/:z

  10. ports:

  11. - 127.0.0.1:1514:10514

  12. networks:

  13. - harbor

  14. registry:

  15. image: vmware/registry-photon:v2.6.2-v1.4.0

  16. container_name: registry

  17. restart: always

  18. volumes:

  19. - /mnt/harbor/registry:/storage:z

  20. - ./common/config/registry/:/etc/registry/:z

  21. networks:

  22. - harbor

  23. environment:

  24. - GODEBUG=netdns=cgo

  25. command:

  26. ["serve", "/etc/registry/config.yml"]

  27. depends_on:

  28. - log

  29. logging:

  30. driver: "syslog"

  31. options:

  32. syslog-address: "tcp://127.0.0.1:1514"

  33. tag: "registry"

  34. mysql:

  35. image: vmware/harbor-db:v1.4.0

  36. container_name: harbor-db

  37. restart: always

  38. volumes:

  39. - /mnt/harbor/database:/var/lib/mysql:z

  40. networks:

  41. - harbor

  42. env_file:

  43. - ./common/config/db/env

  44. depends_on:

  45. - log

  46. logging:

  47. driver: "syslog"

  48. options:

  49. syslog-address: "tcp://127.0.0.1:1514"

  50. tag: "mysql"

  51. adminserver:

  52. image: vmware/harbor-adminserver:v1.4.0

  53. container_name: harbor-adminserver

  54. env_file:

  55. - ./common/config/adminserver/env

  56. restart: always

  57. volumes:

  58. - /mnt/harbor/config/:/etc/adminserver/config/:z

  59. - /mnt/harbor/secretkey:/etc/adminserver/key:z

  60. - /mnt/harbor/:/data/:z

  61. networks:

  62. - harbor

  63. depends_on:

  64. - log

  65. logging:

  66. driver: "syslog"

  67. options:

  68. syslog-address: "tcp://127.0.0.1:1514"

  69. tag: "adminserver"

  70. ui:

  71. image: vmware/harbor-ui:v1.4.0

  72. container_name: harbor-ui

  73. env_file:

  74. - ./common/config/ui/env

  75. restart: always

  76. volumes:

  77. - ./common/config/ui/app.conf:/etc/ui/app.conf:z

  78. - ./common/config/ui/private_key.pem:/etc/ui/private_key.pem:z

  79. - ./common/config/ui/certificates/:/etc/ui/certificates/:z

  80. - /mnt/harbor/secretkey:/etc/ui/key:z

  81. - /mnt/harbor/ca_download/:/etc/ui/ca/:z

  82. - /mnt/harbor/psc/:/etc/ui/token/:z

  83. networks:

  84. - harbor

  85. depends_on:

  86. - log

  87. - adminserver

  88. - registry

  89. logging:

  90. driver: "syslog"

  91. options:

  92. syslog-address: "tcp://127.0.0.1:1514"

  93. tag: "ui"

  94. jobservice:

  95. image: vmware/harbor-jobservice:v1.4.0

  96. container_name: harbor-jobservice

  97. env_file:

  98. - ./common/config/jobservice/env

  99. restart: always

  100. volumes:

  101. - /mnt/harbor/job_logs:/var/log/jobs:z

  102. - ./common/config/jobservice/app.conf:/etc/jobservice/app.conf:z

  103. - /mnt/harbor/secretkey:/etc/jobservice/key:z

  104. networks:

  105. - harbor

  106. depends_on:

  107. - ui

  108. - adminserver

  109. logging:

  110. driver: "syslog"

  111. options:

  112. syslog-address: "tcp://127.0.0.1:1514"

  113. tag: "jobservice"

  114. proxy:

  115. image: vmware/nginx-photon:v1.4.0

  116. container_name: nginx

  117. restart: always

  118. volumes:

  119. - ./common/config/nginx:/etc/nginx:z

  120. networks:

  121. - harbor

  122. ports:

  123. - 80:80

  124. - 443:443

  125. - 4443:4443

  126. depends_on:

  127. - mysql

  128. - registry

  129. - ui

  130. - log

  131. logging:

  132. driver: "syslog"

  133. options:

  134. syslog-address: "tcp://127.0.0.1:1514"

  135. tag: "proxy"

  136. networks:

  137. harbor:

  138. external: false

安装Harbor
./install.sh

可以使用docker-compose来管理Harbor的生命周期。 一些有用的命令列出如下:
docker-compose ps 查看


docker-compose stop 停止
docker-compose start 启动
docker-compose down 删除,利用./install.sh可以重新安装

五:验证

1.碰到的问题

a. 错误提示

点击(此处)折叠或打开

  1. /usr/lib/python2.7/site-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.21.1) or chardet (2.2.1) doesn

原因:python库中urllib3 (1.21.1) or chardet (2.2.1) 的版本不兼容
解决办法:
pip uninstall urllib3
pip uninstall chardet
pip install requests

b.错误提示:"harbor failed to initialize the system: read /etc/adminserver/key: is a directory"
原因:harbor.cfg中的secretkey_path和docker-compose.yml中的设置不一致

2.ui 界面


感谢你能够认真阅读完这篇文章,希望小编分享的"kubernetes中Harbor有什么用"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

镜像 组件 服务 存储 功能 管理 认证 命令 文件 用户 篇文章 配置 数据 一致 企业 原因 底层 拷贝 日志 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中关村互联网科技集团 互联网科技巨头监管 A股互联网金融科技公司 科技互联网项目 互联网与科技金融数据 互联网 科技 美国互联网黑科技 联恩商钥互联网科技有限公司 新华互联网科技校企合作 青岛中康互联网医疗科技有限公司 阿里互联网科技公司 智腾互联网科技有限公司 新兴科技互联网创新大赛颁奖典礼 内蒙古九一互联网科技 科技互联网海报 科技互联网的核心竞争力 吉林省码上互联网科技电话 福仕德教育科技互联网 银川新华互联网科技学校招聘 山东亿川互联网科技有限责任公司 智慧科技互联网 蓝色互联网科技 玖二柒互联网科技公司待遇 电子科技大学互联网创业大赛 乌苏新华互联网科技做什么的 企晟互联网信息科技有限公司 吉林省码上互联网科技电话 科技互联网经济论坛 东风日产互联网科技公司叫什么 北京瑞云互联网科技有限公司
0