Harbor备忘录
1…概述
VMware 公司设计的 Registry server 开源项目,包括了权限管理 (RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时设计镜像复制和中文支持等功能。
一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。
我们通常使用Harbor来管理docker镜像,公司内部自己构建的镜像都会上传到harbor,帮客户搭建服务时可以直接从公司的harbor上拉取镜像。
2.安装
安装方式基于docker和docker-compose的环境的,前提需要具备docker和docker-compose的环境
推荐版本:
docker:23.0.1
docker-compsoe:1.29.2, build 5becea4c
2.1.离线下载
采用offline安装方式,从https://github.com/goharbor/harbor/releases/tag/v2.8.0 下载,下载后的文件是 harbor.v2.8.0.tar.gz
2.2.SSL证书
Harbor支持http和https两种方式,默认两者都开启。
Https方式需要自行配置SSL证书,详情参照如下所示
# Create certificates:
wget http://files.freeswitch.org/downloads/ssl.ca-0.1.tar.gz
tar zxfv ssl.ca-0.1.tar.gz
cd ssl.ca-0.1/
perl -i -pe 's/md5/sha256/g' *.sh
perl -i -pe 's/1024/4096/g' *.sh
./new-root-ca.sh
./new-server-cert.sh registry.docker.org
./sign-server-cert.sh registry.docker.org
2.3.Harbor配置文件修改
解压文件harbor.v2.8.0.tar.gz,进入目录harbor,修改harbor配置文件
tar -xzvf harbor.v2.8.0.tar.gz
cd harbor
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
主要修改以下内容:
- hostname 这个是域名,需要修改成大家公司自己的域名,如果是自己测试,可以随便填个域名,然后在/etc/hosts中解析域名到127.0.0.1就好,在这里我们输入registry.docker.org
- http.port 这个是端口,默认是80,一般不改,除非80端口被占用了
- https 这个是https配置,需要提供SSL证书,如果是自己生成的证书,需要在docker配置文件中设置insecure–registries,否则docker会认为这是不安全的域名,下文会说,等会自己生成一个证书再回来修改
- harbor_admin_password 这是harbor提供的管理后台的管理员密码
- database 这个节点下面的配置是harbor自己依赖的数据库密码以及连接参数
- data_volume 这是harbor数据存储的目录,不用修改,之后可以在docker-compose.yml中挂载宿主机目录,只要记住这个目录就好
具体修改示例如下:
hostname: registry.docker.org
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /root/ssl/ssl.ca-0.1/registry.docker.org.crt
private_key: /root/ssl/ssl.ca-0.1/registry.docker.org.key
harbor_admin_password: Admin100%
2.4.安装
切换到harbor文件夹下,运行两个文件prepare和install.sh
配置文件有修改,运行
./prepare
启动
./install.sh
关闭
docker-compose down
3.客户端配置
在/etc/docker目录下增加daemon.json文件
内容如下,这里用192.168.90.31示例,https默认端口443,http默认端口是80,如果有变动,需要加上自定义的端口:
{
"insecure-registries": [
"https://registry.docker.org",
"http://192.168.90.31"
],
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
配置完成后
systemctl daemon-reload && systemctl restart docker
4.UI访问
浏览器登录:https://192.168.90.31/ 或者 https://registry.docker.org
自签证书,浏览器不信任,需要添加信任并继续
登录用户名:admin
登录密码:Admin100%
5.命令示例
5.1.docker命令示例
登录(用户名:admin,密码:Admin100%)
docker login registry.docker.org
拉取
docker pull registry.docker.org/avcs/REPOSITORY[:TAG]
推送
docker push registry.docker.org/avcs/REPOSITORY[:TAG]
标记
docker tag SOURCE_IMAGE[:TAG] registry.docker.org/avcs/REPOSITORY[:TAG]
5.2.Helm命令示例
打包
helm package CHART_PATH
推送
helm push CHART_PACKAGE oci://registry.docker.org/avcs
5.3.CNAB命令示例
推送
cnab-to-oci push CNAB_PATH --target registry.docker.org/avcs/REPOSITORY[:TAG] --auto-update-bundle