dockerhub私有仓库搭建,企业级开源docker仓库解决方案

1. 环境准备1.1. 硬件注意: 磁盘大小需要根据实际使用场景来确定1.2. 软件1.3. 网络2. Harbor配置2.1. Harbor程序下载可以通过H

1. 环境准备

1.1. 硬件

eb54bc749555430bb76f4424002d0589~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717761811&x-signature=4ycX1MrOTG2CqNFv7lMLKAzIveo%3D

请注意,磁盘大小应根据您的实际使用场景确定。

1.2. 软件

71d1666db3794a4b857a005a7b973d65~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717761811&x-signature=UHnQ9gwP7U5uQGnBNeCVFc%2FXd60%3D

1.3. 网络

2ccf2f348bc84040b81dd70970a47462~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717761811&x-signature=CeRXWfgaMflcztQcWHiR048fsVI%3D

2. Harbor配置

2.1. Harbor程序下载

可以从Harbor https://github.com/goharbor/harbor/releases 下载。

2.2. 解压压缩包

tar xvfharbor在线安装程序版本.tgz

2.3. 修改配置文件

压缩包解压后,会得到一个harbor文件夹,该文件夹根目录下有harbor.cfg配置文件。 Harbor.cfg 有两种类型的参数:必需参数和可选参数。

· 所需参数: 要求在配置文件中设置这些参数。当用户更新Harbor.cfg并通过运行install.sh脚本重新安装Harbor时,更改的参数就会生效。

· 可选参数: 这些参数对于更新来说是可选的。这意味着用户可以保留默认值并在Harbor 启动后在Web UI 中更新它们。如果配置了Harbor.cfg,这些参数只有在Harbor第一次启动时才会生效。 Harbor.cfg 忽略对这些参数的后续更改。

注意: 如果您选择通过UI 设置这些参数,请在启动Harbor 后立即执行此操作。特别是,在Harbor 中注册或创建新用户之前,必须设置所需的auth_mode。如果系统中存在任何用户(默认管理用户除外),则无法更改auth_mode。

参数解释如下。请注意,您至少需要更改主机名参数。

2.4. 必需参数

·主机名:

用于访问UI和Harbor服务的目标主机的主机名。这必须是目标主机的IP 地址或域名(FQDN)(例如,192.168.1.10 或reg.yourdomain.com)。不要使用localhost 或127.0.0.1 作为主机名,因为外部客户端需要访问Harbor 服务。

· ui_url_协议:

(http 或https;默认为http)用于访问UI 和令牌/通知服务的协议。如果启用公证,则该参数必须为https。默认是http。要配置https 协议,请参阅使用HTTPS 访问配置Harbor。

· 数据库密码:

用于db_auth 的MySQL 数据库root 密码。请在生产环境修改此密码

· max_job_workers :

(默认值为3)作业服务中复制作业的最大数量。对于每个镜像复制作业,程序会将存储库中的所有标签与远程目标同步。增加此数量可以在系统中实现更多并发复制作业。但每个复制过程都会消耗一定的网络/CPU/IO资源,因此请根据主机的硬件资源谨慎选择该参数的值。

· 定制_crt:

(打开或关闭,默认打开),如果此属性打开,则准备一个脚本来创建用于生成/验证注册表令牌的私钥和根证书。如果密钥和根证书由外部源提供,请将此属性设置为关闭。

·ssl_cert:

SSL 证书的路径。仅当协议设置为https 时适用。

· ssl_cert_key:

SSL 密钥的路径。仅当协议设置为https 时适用。

· Secretkey_path:

用于在复制策略中加密或解密远程港口上的密码的密钥传递。

· log_rotate_count:

日志文件在删除之前将轮换log_rotate_count 次。如果count 为0,则旧版本将被删除而不是轮换。

· log_rotate_size:

仅当日志文件大于log_rotate_size 字节时,才会轮换日志文件。如果大小后跟k,则假定大小以千字节为单位。如果使用M,则大小将以兆字节为单位显示;如果使用G,则大小将以千兆字节为单位显示。大小100、大小100k、大小100M 和大小100G 均有效。

2.5. 可选参数

电子邮件设置:

Harbor 需要这些参数来向用户发送“密码重置”电子邮件,并且仅在需要此功能时才需要设置。另请注意,默认情况下不启用SSL 连接。如果您的SMTP 服务器需要SSL,则必须通过设置email_ssl=TRUE 参数来启用SSL,但不支持STARTTLS。如果您的电子邮件服务使用自签名或不受信任的证书,则必须设置email_insecure=true。

– email_server=smtp.mydomain.com – email_server_port=25 – email_identity=- email_username=[sample_admin@mydomain.com](mailto:sample_admin@mydomain.com) – email_password=abc – email_from=admin [sample_admin@mydomain.com(mailto:sample_admin@mydomain) ) ) .com)- email_ssl=false- email_insecure=false · Harbor_admin_password:

管理员初始密码。该密码仅在第一次启动Harbor 时有效。此设置稍后将被忽略,因此您需要在UI 中设置管理员密码。请注意, 的默认用户名/密码是admin/Harbor12345。

· auth_mode:

使用的身份验证类型。默认为db_auth。也就是说,凭证存储在数据库中。对于LDAP 身份验证,请将其设置为ldap_auth。

重要: 如果您从现有的Harbor 实例升级,则在启动新版本的Harbor 之前,必须确保harbor.cfg 配置文件中的auth_mode 相同。否则,升级后用户可能无法登录。

· ldap_url:LDAP 连接URL(例如:ldaps://ldap.mydomain.com)。仅当**auth_mode** 设置为ldap_auth 时使用。

· ldap_searchdn: 具有搜索LDAP/AD 服务器权限的用户DN(例如,uid=admin,ou=people,dc=mydomain,dc=com)。

· ldap_search_pwd:ldap_searchdn 中指定的用户密码。

· ldap_basedn: 查找用户的基本DN(例如,ou=people,dc=mydomain,dc=com)。仅当**auth_mode** 设置为ldap_auth 时使用。

· ldap_filter: 用于搜索用户的搜索过滤器,例如objectClass=person。

· ldap_uid: 用于在LDAP 搜索期间匹配用户属性。它可以是uid、cn、email 或其他属性。

· 搜索ldap_scope: 用户范围、0-LDAP_SCOPE_BASE、1-LDAP_SCOPE_ONELEVEL、2-LDAP_SCOPE_SUBTREE。默认值为2。

· self_registration :(打开或关闭;默认打开) 启用或禁用用户的自我注册功能。禁用后,新用户只能由管理员用户创建,并且只有管理员才能在Harbor 中创建新用户。 注意: 如果auth_mode 设置为ldap_auth*,则自注册功能始终处于禁用状态,并且该设置将被忽略。 *

· token_expiration: 令牌服务创建的令牌的到期时间(以分钟为单位)。默认值为30 分钟。

·project_creation_restriction: 用于控制用户创建项目的权限设置。默认情况下,任何人都可以创建项目,并设置为“adminonly”,这意味着只有管理员可以创建项目。

2.6. 配置存储后端(可选)

默认情况下,Harbor 将图像保存到本地文件系统。在生产环境中,您可以考虑使用其他存储后端来代替本地文件系统,例如S3、OpenStack Swift 或Ceph。您需要更新的是存储文件的common/templates/registry/config.yml 部分。例如,如果您使用Openstack Swift 作为存储后端,该部分将如下所示:

storage: swift:password: ADMIN_PASS authurl: http://keystone_addr:35357/v3/authtenant: admindomain:defaultregion:regionOnecontainer:docker_imagesNote:注册表设置参考有关注册表存储后端的更多信息请参阅。

2.7. Harbor监听自定义端口

默认情况下,Harbor 侦听80 (HTTP) 和443(HTTPS,如果已配置),但您可以使用自定义命令更改此设置。

HTTP协议用

1.修改docker-compose.yml

将前80 更改为您的自定义端口,例如8888:80。

proxy: image: 库/nginx:1.11.5 restart: 始终- ./config/nginx:/etc/nginx ports: – 8888:80 – 443:443 dependent_on: – mysql – 注册表- ui – 日志日志卷driver3 s log’ options: ‘tcp: //127.0.0.1:1514 ‘ tag: ‘proxy’2.修改Harbor.cfg,将端口添加到参数’hostname’中。

主机名=192.168.0.2:8888

3. 重新部署港口。请参阅上一节“管理Harbor 生命周期”。

适用于HTTPS协议

方法与HTTP协议相同

3. Harbor安装

Harbor文件夹中有一个install.sh脚本。您可以通过配置harbor.cfg和存储后端(可选)来镜像您的Harbor安装。请注意,在线安装可能需要一些时间才能从Docker hub 下载Harbor 镜像,具体取决于您的网络状况。

· 默认安装(无Notary/Clair)

须藤./install.sh

Harbor 现在与Notary 和Clair 集成(用于漏洞扫描)。但是,默认情况下不安装Notary 或Clair 服务。

如果一切顺利,您应该能够打开浏览器并访问位于http://reg.yourdomain.com/的管理门户(reg.yourdomain.com 是在harbor.cfg 中配置的主机名,默认的管理员用户名/密码是admin /) 港口12345)。

登录管理门户并创建一个新项目(例如: myproject)。然后您可以登录并使用docker 命令推送映像。默认情况下,Harbor默认安装使用HTTP协议,而Docker默认信任https协议。因此,要使用docker 命令登录并推送镜像,需要在docker 配置文件中添加–insecure-registry 并重启docker 服务。

docker login reg.yourdomain.comdocker push reg.yourdomain.com/myproject/myrepo:mytag · 使用Notary 安装

要使用Notary服务安装Harbor,请在运行install.sh时添加参数:

sudo ./install.sh –with-notary

请注意, 使用公证安装,需要将参数ui_url_protocol 设置为“https”。

· 使用Clair 安装

要使用Clair服务安装Harbor,请在运行install.sh时添加参数:

sudo ./install.sh –with-clair

· 安装Clair 和Notary

sudo ./install.sh –with-notary –with-clair

4. 配置HTTPS访问配置Harbor

Harbor没有附带证书,默认使用HTTP来处理请求。尽管这使得启动和运行相对容易,尤其是在开发或测试环境中,但不建议在生产环境中使用。要启用HTTPS,请参阅使用HTTPS 访问Harbor。

5. Harbor的生命周期

5.1. 默认安装管理Harbor的生命周期

· 启动、停止、重启

您可以使用docker-compose 管理Harbor 的生命周期。以下是一些有用的命令(必须在与docker-compose.yml 相同的目录中运行):

sudo docker-compose 启动/停止/重新启动

· 更新配置

要更改Harbor 配置,请首先停止现有的Harbor 实例并更新harbor.cfg。接下来,运行准备脚本来设置配置。最后,重新创建并启动Harbor实例:

sudo docker-compose down -vsudo vim Harbor.cfgsudopreparesudo docker-compose up -d · 删除Harbor容器,并将镜像数据和Harbor数据库文件保存在文件系统上。

sudo docker-compose down -v

· 删除Harbor数据库和镜像数据(用于干净的重新安装)。

· rm -r /data/database · rm -r /data/registry

5.2. 与notary或者Clair一起安装时管理Harbor的生命周期

如果Harbor 与Notary 或Clair 一起安装,则必须使用docker-compose 命令指定一两个附加模板文件。用于管理Harbor生命周期的docker-compose命令是:

sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml [ up|down|ps|stop|start ]sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml [ up|down|ps|stop|start ] 使用Notary安装Harbor时,如果要部署Harbor,请更改配置并重新启动。您需要执行以下操作:以下命令: · sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml down -v · sudo vimharbor.cfg · sudo prepare –with-notary · sudo docker- compose -f ./docker-compose.yml -f ./docker-compose.notary.yml up -dsudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f . /docker -compose.clair.yml down -vsudo vim Harbor.cfgsudo prepare –with-notary –with-clairsudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml – f . /docker-compose.clair.yml up -d

6. 持久数据和日志文件

默认情况下,图像数据保存在主机的/data/目录中。即使删除或重新创建Harbor 容器,该数据也不会更改。此外,Harbor 使用rsyslog 从每个容器收集日志。默认情况下,这些日志文件保存到目标主机的/var/log/harbor/目录中以用于故障排除。

7. 性能调整

默认情况下,Harbor 将Clair 容器CPU 使用率限制为150000,以避免耗尽所有CPU 资源。这是在docker-compose.clair.yml 文件中定义的,可以根据您的硬件配置进行更改。

8. 故障排除

· 如果Harbor无法正常运行,请运行以下命令检查Harbor中的所有容器是否处于UP状态。

sudo docker-compose ps

如果容器不处于UP状态,请检查目录容器日志文件/var/log/harbor。例如,如果容器Harbor-ui没有运行,您应该查看日志文件ui.log。

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/83145.html

(0)
小条's avatar小条
上一篇 2024年5月31日 下午8:03
下一篇 2024年5月31日 下午8:03

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注