Harbor私有仓库搭建和使用教程

目录

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/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 您可以通过以下步骤来搭建Harbor私有仓库: 1. 安装DockerDocker-compose 2. 下载Harbor镜像并启动容器 3. 访问Harbor Web界面并进行初始化设置 4. 创建用户帐户并登录 5. 推送和下载镜像 请注意,Harbor的安装和配置可能需要一些技术知识,并且应根据您的系统环境进行适当的调整。有关更详细的信息,请参阅Harbor官方文档。 ### 回答2: Docker是一项非常受欢迎的容器化技术,它使得应用开发和部署非常方便,而Harbor是一款优秀的开源Docker私有仓库软件,它提供了安全、可靠、灵活的私有容器仓库解决方案,是非常适合企业内部使用的仓库软件。 搭建Harbor私有仓库的过程可以分为以下几个步骤: 1. 安装Docker:在安装Harbor之前,你需要先安装好Docker,确保Docker已经正确安装、运行,并且网络已经配置好。 2. 下载并解压Harbor安装包:从Harbor的官方网站(https://goharbor.io/)下载Harbor的安装包,然后解压到指定目录中。 3. 配置Harbor:在解压后的目录中,找到harbor.cfg文件,按照需求修改该文件中的配置选项,例如端口、数据存储目录、认证方式、管理员密码等。 4. 启动Harbor:运行docker-compose up -d命令即可启动Harbor私有仓库,启动后可以使用docker ps命令查看状态。 5. 配置Docker客户端:在启动Harbor后,你需要配置Docker客户端的认证信息,才能访问Harbor仓库。在Docker客户端中使用docker login命令,输入用户名、密码和仓库地址即可。 6. 使用Harbor:在配置完成后,你可以使用docker命令或者Harbor的Web UI界面来管理和使用你的私有仓库了。 总之,在使用Harbor搭建私有仓库时,需要先安装好Docker,并在运行Harbor之前进行配置,配置好认证信息,才能正常访问私有仓库Harbor还提供了丰富的权限管理、镜像管理、日志管理等功能,非常适合用于企业内部应用的私有容器仓库解决方案。 ### 回答3: Docker是一种轻便的容器技术,Harbor是一种用于Docker注册表和管理系统的私有仓库Harbor私有仓库可以极大地方便企业级应用程序的构建、部署和管理,特别适用于A DevOps和微服务架构。要搭建Harbor私有仓库,步骤如下: 第一步,安装DockerDocker Compose。在安装完Docker后,可以使用以下命令来安装Docker Compose: curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose 第二步,下载并安装Harbor私有仓库。从Harbor的官方网站上下载和安装最新版本的Harbor软件包: wget https://api.github.com/repos/goharbor/harbor/releases/latest -O harbor.json RELEASE_VERSION=$(cat harbor.json|jq ".name"|sed 's/"//g') echo "Harbor Version: ${RELEASE_VERSION}" wget https://github.com/goharbor/harbor/releases/download/${RELEASE_VERSION}/harbor-online-installer-${RELEASE_VERSION}.tgz tar zxvf harbor-online-installer-${RELEASE_VERSION}.tgz -C /opt 第三步,创建并编辑Harbor配置文件。在Harbor的安装目录下,创建一个名为harbor.cfg的配置文件: cd /opt/harbor cp harbor.cfg.tmpl harbor.cfg vi harbor.cfg 在配置文件中,指定Harbor的主机名、端口和数据存储路径等细节。你可以调整这些设置来适应你的特定需求。 第四步,启动Harbor容器。使用Docker Compose和Harbor配置文件来创建Harbor的运行环境: docker-compose up -d 第五步,使用浏览器访问Harbor私有仓库。在浏览器中访问http://localhost:8888,你会看到Harbor的登录页面。输入管理员账户和密码,即可进入Harbor管理界面。 第六步,使用Harbor私有仓库。使用Docker Registry API或Docker客户端命令行工具,与你的Harbor私有仓库进行交互。将部署在Harbor私有仓库中的镜像下载并使用在你的应用程序中。 总之,搭建Harbor私有仓库非常不错,它提供了一个安全、集中和可扩展的Docker仓库,并支持自动构建和镜像扫描等高级功能。随着DevOps和微服务的兴起,Harbor私有仓库将成为企业应用的关键组成部分,也值得我们深入探索和研究。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moon-01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值