Harbor Quickstart

1 minute read

Harbor 简介

Harbor 是一个用于存储和分发 Docker 镜像的企业级私有 Registry 服务器。Habor 是由 VMWare 中国团队开源的企业级容器镜像仓库。特性包括:友好的用户界面,基于角色的访问控制,水平扩展,同步复制,AD/LDAP 集成以及审计日志等。

本文档仅说明单机安装 harbor 服务,使用单机编排工具 docker-compose。

Harbor 安装

环境准备

创建目录及下载文件

[root@harbori ~]# mkdir /data
[root@harbori ~]# wget https://github.com/goharbor/harbor/releases/download/v2.2.3/harbor-offline-installer-v2.2.3.tgz -P /data
[root@harbori ~]# tar zxvf harbor-offline-installer-v2.2.3.tgz -C /data
# 创建用于存放SSL证书的目录
[root@harbori ~]# mkdir /data/harbor/ssl
[root@harbori ~]# tree /data/harbor
/data/harbor
├── common.sh
├── harbor.v2.2.3.tar.gz
├── harbor.yml.tmpl
├── install.sh
├── LICENSE
├── prepare
└── ssl

修改配置文件

[root@harbori ~]# cp /data/harbor/harbor.yml.tmpl /data/harbor/harbor.yml
[root@harbori ~]# sed -i '5s#reg.mydomain.com#luojianjun.cn#;17s#/your/certificate/path#/data/harbor/ssl/1_luojianjun.cn_bundle.crt#;18s#/your/private/key/path#/data/harbor/ssl/2_luojianjun.cn.key#;34s#Harbor12345#aluo.images#' /data/harbor/harbor.yml

修改项

  • hostnamereg.mydomain.com —> luojianjun.cn
  • certificate/your/certificate/path —> /data/harbor/ssl/1_luojianjun.cn_bundle.crt
  • private_key/your/private/key/path —> /data/harbor/ssl/2_luojianjun.cn.key
  • harbor_admin_passwordHarbor12345 —> aluo.images

因为我的域名有SSL证书,所以直接拷贝到 /data/harbor/ssl 目录了,如果你的域名没有SSL证书可以按照如下方式创建,创建 harbor 访问域名证书:

# 修改 aluo.io 为你的域名
$ cd /data/harbor/ssl
$ openssl genrsa -out tls.key 2048
$ openssl req -new -x509 -key tls.key -out tls.cert -days 360 -subj /CN=*.aluo.io

安装 harbor

[root@harbori harbor]# cd /data/harbor/
[root@harbori harbor]# ./prepare
[root@harbori harbor]# ./install.sh
# 启动
[root@harbori harbor]# docker-compose up -d
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-portal ... done
Creating registry      ... done
Creating harbor-db     ... done
Creating redis         ... done
Creating registryctl   ... done
Creating harbor-core   ... done
Creating harbor-jobservice ... done
Creating nginx             ... done
[root@harbori harbor]# docker-compose ps
      Name                     Command                  State                                          Ports                                    
------------------------------------------------------------------------------------------------------------------------------------------------
harbor-core         /harbor/entrypoint.sh            Up (healthy)                                                                               
harbor-db           /docker-entrypoint.sh            Up (healthy)                                                                               
harbor-jobservice   /harbor/entrypoint.sh            Up (healthy)                                                                               
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp                                                   
harbor-portal       nginx -g daemon off;             Up (healthy)                                                                               
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:80->8080/tcp,:::80->8080/tcp, 0.0.0.0:443->8443/tcp,:::443->8443/tcp
redis               redis-server /etc/redis.conf     Up (healthy)                                                                               
registry            /home/harbor/entrypoint.sh       Up (healthy)                                                                               
registryctl         /home/harbor/start.sh            Up (healthy)

Harbor 访问

地址:http://luojianjun.cn

账户/密码:admin/aluo.images

Harbor 使用

登录 Harbor Docker Registry

# docker login --username=admin luojianjun.cn
$ docker login -u admin luojianjun.cn

从 Registry 中拉取镜像

$ docker pull luojianjun.cn/library/nginx:[镜像版本号]

将镜像推送到 Registry

# 请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
$ docker tag [ImageId] luojianjun.cn/library/nginx:[镜像版本号]
$ docker push luojianjun.cn/library/nginx:[镜像版本号]

示例

使用 “docker tag” 命令重命名镜像,并将它推送至 Registry。

$ docker images
REPOSITORY                                                       TAG              IMAGE ID       CREATED        SIZE
registry.cn-hangzhou.aliyuncs.com/acs/log-pilot                  0.9.7-filebeat   10a688e1229a   2 years ago    119MB

$ docker tag 10a688e1229a luojianjun.cn/library/log-pilot:0.9.7-filebeat

使用 “docker push” 命令将该镜像推送至远程。

$ docker push luojianjun.cn/library/log-pilot:0.9.7-filebeat

用户权限

角色 权限说明
访客 对于指定项目拥有只读权限
开发人员 对于指定项目拥有读写权限
维护人员 对于指定项目用户读写权限,创建 Webhooks
项目管理员 除了读写权限,同事拥有用户管理/镜像扫描等管理权限