目录

Harbor仓库介绍

查看compose版本

部署harbor

修改harbor参数

 Harbor参数详解

1.所需参数

2.可选参数

Harbor私有仓库使用方法

登录

添加项目

测试镜像推送

注册新harbor用户

 添加管理员

从harbor下载镜像


Harbor仓库介绍

我们在日常Docker容器使用和管理过程中,渐渐发现部署企业私有仓库往往是很有必要的, 它可以帮助你管理企业的一些敏感镜像, 同时由于Docker Hub的下载速度和GFW的原因, 往往需要将一些无法直接下载的镜像导入本地私有仓库. 而Harbor就是部署企业私有仓库的一个不二之选。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,Harbor主要提供Dcoker Registry管理UI,提供的功能包括:基于角色访问的控制权限管理(RBAC)、AD/LDAP集成、日志审核、管理界面、自我注册、镜像复制和中文支持等。Harbor的目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,额外提供了如下功能::

  • 基于角色的访问控制(Role Based Access Control)
  • 基于策略的镜像复制(Policy based image replication)
  • 镜像的漏洞扫描(Vulnerability Scanning)
  • AD/LDAP集成(LDAP/AD support)
  • 镜像的删除和空间清理(Image deletion & garbage collection)
  • 友好的管理UI(Graphical user portal)
  • 审计日志(Audit logging)
  • RESTful API
  • 部署简单(Easy deployment)

查看compose版本

需要提前安装compose

[root@localhost ~]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3

部署harbor

解压harbor包到指定目录

[root@localhost ~]# tar xf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
[root@localhost ~]# ll /usr/local/
总用量 0
drwxr-xr-x. 2 root root  28 12月  1 16:19 bin
drwxr-xr-x. 2 root root   6 11月  5 2016 etc
drwxr-xr-x. 2 root root   6 11月  5 2016 games
drwxr-xr-x. 3 root root 263 12月  1 16:25 harbor

修改harbor参数

[root@localhost ~]# vi /usr/local/harbor/harbor.cfg 

      1 ## Configuration file of Harbor
      2 
      3 #The IP address or hostname to access admin UI and registry service.
      4 #DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by e        xternal clients.
      5 hostname = 192.168.100.13  ##使用 localhost 或 127.0.0.1 为主机名

 Harbor参数详解

关于 Harbor.cfg 配置文件中有两类参数:所需参数和可选参数

1.所需参数

这些参数需要在配置文件 Harbor.cfg 中设置。

如果用户更新它们并运行 install.sh脚本重新安装 Harbour,

参数将生效。具体参数如下:

hostname:用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限 定的域名(FQDN)

例如 192.168.195.128 或 hub.kgc.cn。不要使用 localhost 127.0.0.1 为主机名

ui_url_protocol:(http 或 https,默认为 http)用于访问 UI 和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为 https。

max_job_workers:镜像复制作业线程。

db_password:用于db_auth 的MySQL数据库root 用户的密码。

customize_crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。

当由外部来源提供密钥和根证书时,将此属性设置为 off。

ssl_cert:SSL 证书的路径,仅当协议设置为 https 时才应用。

ssl_cert_key:SSL 密钥的路径,仅当协议设置为 https 时才应用。

secretkey_path:用于在复制策略中加密或解密远程 register 密码的密钥路径。

2.可选参数

这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在 Web UI 上进行更新。

如果进入 Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数 的更新,Harbor.cfg 将被忽略。

注意:如果选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。具体来说,必须在注册或在 Harbor 中创建任何新用户之前设置所需的

auth_mode。当系统中有用户时(除了默认的 admin 用户),auth_mode 不能被修改。具体参数如下:

Email:Harbor需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才需要。

请注意,在默认情况下SSL连接时没有启用。如果SMTP服务器需要SSL,但不支持STARTTLS,那么应该通过设置启用SSL email_ssl = TRUE。

harbour_admin_password:管理员的初始密码,只在Harbour第一次启动时生效。之后,此设置将被忽略,并且应 UI中设置管理员的密码。

请注意,默认的用户名/密码是 admin/Harbor12345。

auth_mode:使用的认证类型,默认情况下,它是 db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为 ldap_auth。

self_registration:启用/禁用用户注册功能。禁用时,新用户只能由 Admin 用户创建,只有管理员用户可以在 Harbour中创建新用户。

注意:当 auth_mode 设置为 ldap_auth 时,自注册功能将始终处于禁用状态,并且该标志被忽略。

Token_expiration:由令牌服务创建的令牌的到期时间(分钟),默认为 30 分钟。

project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下, 每个人都可以创建一个项目。

如果将其值设置为“adminonly”,那么只有 admin 可以创建项目。

verify_remote_cert:打开或关闭,默认打开。此标志决定了当Harbor与远程 register 实例通信时是否验证 SSL/TLS 证书。

将此属性设置为 off 将绕过 SSL/TLS 验证,这在远程实例具有自签名或不可信证书时经常使用。

另外,默认情况下,Harbour 将镜像存储在本地文件系统上。在生产环境中,可以考虑 使用其他存储后端而不是本地文件系统,

如 S3、Openstack Swif、Ceph 等。但需要更新 common/templates/registry/config.yml 文件。

启动harbor

[root@localhost ~]# sh /usr/local/harbor/install.sh


✔ ----Harbor has been installed and started successfully.----

启动后查看镜像

[root@localhost ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
nginx                       moon                3a23aa75b84b        6 days ago          131MB
tomcat                      latest              e0bd8b34b4ea        12 days ago         649MB
centos                      7                   8652b9f0cb4c        2 weeks ago         204MB
vmware/harbor-log           v1.2.2              36ef78ae27df        3 years ago         200MB
vmware/harbor-jobservice    v1.2.2              e2af366cba44        3 years ago         164MB
vmware/harbor-ui            v1.2.2              39efb472c253        3 years ago         178MB
vmware/harbor-adminserver   v1.2.2              c75963ec543f        3 years ago         142MB
vmware/harbor-db            v1.2.2              ee7b9fa37c5d        3 years ago         329MB
vmware/nginx-photon         1.11.13             6cc5c831fc7f        3 years ago         144MB
vmware/registry             2.6.2-photon        5d9100e4350e        3 years ago         173MB
vmware/postgresql           9.6.4-photon        c562762cbd12        3 years ago         225MB
vmware/clair                v2.0.1-photon       f04966b4af6c        3 years ago         297MB
vmware/harbor-notary-db     mariadb-10.1.10     64ed814665c6        3 years ago         324MB
vmware/notary-photon        signer-0.5.0        b1eda7d10640        3 years ago         156MB
vmware/notary-photon        server-0.5.0        6e2646682e3c        3 years ago         157MB
photon                      1.0                 e6e4e4a2ba1b        4 years ago         128MB

查看启动后的容器

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                                                              NAMES
62f1c6a88fcc        vmware/nginx-photon:1.11.13        "nginx -g 'daemon of…"   8 minutes ago       Up 8 minutes        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
bfa57a2338a4        vmware/harbor-jobservice:v1.2.2    "/harbor/harbor_jobs…"   8 minutes ago       Up 8 minutes                                                                           harbor-jobservice
82b466efcf45        vmware/harbor-ui:v1.2.2            "/harbor/harbor_ui"      8 minutes ago       Up 8 minutes                                                                           harbor-ui
46d2e8cb92a4        vmware/registry:2.6.2-photon       "/entrypoint.sh serv…"   8 minutes ago       Up 8 minutes        5000/tcp                                                           registry
32cb8f933c81        vmware/harbor-db:v1.2.2            "docker-entrypoint.s…"   8 minutes ago       Up 8 minutes        3306/tcp                                                           harbor-db
441e64b8491c        vmware/harbor-adminserver:v1.2.2   "/harbor/harbor_admi…"   8 minutes ago       Up 8 minutes                                                                           harbor-adminserver
695071d68f1f        vmware/harbor-log:v1.2.2           "/bin/sh -c 'crond &…"   8 minutes ago       Up 8 minutes        127.0.0.1:1514->514/tcp                                            harbor-log
ea2266cab039        nginx:moon                         "/bin/bash"              6 days ago          Up 6 days                                                                              tender_curie
7342ef3e8fc4        nginx:moon                         "/bin/bash"              6 days ago          Up 6 days                                                                              romantic_mayer

 

[root@localhost ~]# cd /usr/local/harbor/
[root@localhost harbor]# docker-compose ps
       Name                   Command             State             Ports           
------------------------------------------------------------------------------------
harbor-adminserver   /harbor/harbor_adminserver   Up                                
harbor-db            docker-entrypoint.sh         Up      3306/tcp                  
                     mysqld                                                         
harbor-jobservice    /harbor/harbor_jobservice    Up                                
harbor-log           /bin/sh -c crond && rm -f    Up      127.0.0.1:1514->514/tcp   
                     ...                                                            
harbor-ui            /harbor/harbor_ui            Up                                
nginx                nginx -g daemon off;         Up      0.0.0.0:443->443/tcp,     
                                                          0.0.0.0:4443->4443/tcp,   
                                                          0.0.0.0:80->80/tcp        
registry             /entrypoint.sh serve /etc/   Up      5000/tcp                  
                     ...                                                        

Harbor私有仓库使用方法

访问192.168.100.13

登录

管理员用户名admin

密码是 Harbor12345

添加项目

 

 

此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,

Register 服务器在端口 80 上侦听。

以上操作都是在 Harbor 服务器本地操作。如果其他客户端上传镜像到 Harbor,就会报

如下错误。出现这问题的原因 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜

像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

 

WARNING! Using --password via the CLI is insecure. Use --password-stdin.

Error response from daemon: Get https://192.168.100.13/v2/: EOF

解决方法

修改配置文件

[root@localhost ~]# vim /usr/lib/systemd/system/docker.service 
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.100.13 --containerd=/run/containerd/containerd.sock

登录harbor

[root@localhost ~]# systemctl daemon-reload 
[root@localhost ~]# systemctl restart docker
[root@localhost ~]#  docker login  -u admin -p Harbor12345 http://192.168.100.13
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

测试镜像推送

复制推送命令

[root@localhost ~]# docker tag nginx:latest 192.168.100.13/moon/nginx:new ##给本地镜像打标签
[root@localhost ~]# docker push 192.168.100.13/moon/nginx:new   ##上传镜像

进入harbor查看

注册新harbor用户

 添加管理员

从harbor下载镜像

[root@localhost ~]# docker pull 192.168.100.13/moon/nginx:new
new: Pulling from moon/nginx
Digest: sha256:99d0a53e3718cef59443558607d1e100b325d6a2b678cd2a48b05e5e22ffeb49
Status: Image is up to date for 192.168.100.13/moon/nginx:new
192.168.100.13/moon/nginx:new

如需重新部署,需要移除 Harbor 服务容器全部数据

持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的

/var/log/Harbor/目录下。

rm -rf /data/database/

rm -rf /data/registry/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GitHub 加速计划 / ha / harbor
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:1 个月前 )
ad8c5df5 Signed-off-by: chlins <chlins.zhang@gmail.com> Co-authored-by: Wang Yan <wangyan@vmware.com> 9 天前
ab400c9d * Implemented proxy-cache bandwidth limit UI change Signed-off-by: kunal-511 <yoyokvunal@gmail.com> * Removed ducplicate space between words Signed-off-by: kunal-511 <yoyokvunal@gmail.com> * Fix UT issue Signed-off-by: stonezdj <stone.zhang@broadcom.com> --------- Signed-off-by: kunal-511 <yoyokvunal@gmail.com> Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: stonezdj <stone.zhang@broadcom.com> 9 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐