
Harbor 是一个开源仓库,它通过策略和基于角色的访问控制来保护工件,确保镜像被扫描并且没有漏洞,并将镜像签名为可信的。Harbor 是一个 CNCF 毕业项目,提供合规性、性能和互操作性,可帮助您跨 Kubernetes 和 Docker 等云原生计算平台一致且安全地管理工件。
https://github.com/goharbor/harbor/releases
tar -zxvf harbor-offline-installer-v*.tgz
yes | cp -a harbor.yml harbor/
cd harbor
Harbor的默认镜像存储路径在/data/registry目录下,映射到docker容器里面的/storage目录下。
这个参数是在docker-compose.yml中指定的,在docker-compose up -d运行之前修改。
如果希望将Docker镜像存储到其他的磁盘路径,可以修改这个参数。
vi harbor.yaml
hostname: harbor.pretool.cn
port: 88
port: 4433
certificate: /data/harbor-install/harbor.pretool.cn/harbor.pretool.cn_bundle.crt
private_key: /data/harbor-install/harbor.pretool.cn/harbor.pretool.cn.key
harbor_admin_password: H@rb0rPa33wOrd
data_volume: /data/harbor
sh install.sh
sh install.sh --with-chartmuseum # 启用 helm charts
# 修改hosts,所有节点均需配置
cat >> /etc/hosts << EOF
192.168.237.130 harbor.mydomain.com
EOF
# 导入CA证书
cp -a caCert.crt /etc/pki/ca-trust/source/anchors/
cp -a server.crt /etc/pki/ca-trust/source/anchors/
/bin/update-ca-trust
curl https://harbor.mydomain.com
# 配置docker tls证书不被信任的问题
# 解决 docker login 问题: x509: certificate signed by unknown authority
# https://docs.docker.com/engine/security/certificates/
# 建立一个目录:/etc/docker/certs.d,在这个目录下建立签名的域名的目录,如harbor.mydomain.com
mkdir -p /etc/docker/certs.d/harbor.mydomain.com
cp -a server.crt /etc/docker/certs.d/harbor.mydomain.com/
#官方提示把所有的crt,包括根证书ca.crt拷贝到这个目录,实际上只需要拷贝Harbor的证书即可,根证书都不需要。
# 让 Docker 守护进程接受来自未启用 HTTPS 的 Docker 镜像仓库(Registry)的请求。
[root@master ~]# docker push 192.168.237.133:5000/alpine:3.12.7
The push refers to a repository [192.168.237.133:5000/alpine]
Get https://192.168.237.133:5000/v1/_ping: http: server gave HTTP response to HTTPS client
cat > /etc/docker/daemon.json << EOF
{
"insecure-registries": ["harbor.mydomain.com"]
}
EOF
# 配置生效:
sudo systemctl daemon-reload
sudo service docker restart
docker-compose start
docker-compose ps
docker-compose stop
# 登录私有仓库
docker login -u admin -p Harbor12345 harbor.mydomain.com
[root@reg ~]# docker login -u admin -p Harbor12345 harbor.mydomain.com
Login Succeeded
# 通过docker tag将该镜像标志为要推送到私有仓库,例如:
docker tag simple-php-src:0.1 harbor.mydomain.com/library/simple-php-src:0.1
# 上传镜像,需要先login:
docker push harbor.mydomain.com/library/simple-php-src:0.1
# 访问WEB,在 library 项目下可以看见刚上传的 nginx镜像了.
#http://harbor.mydomain.com
https://harbor.mydomain.com
默认 admin 用户的密码为 Harbor12345 ,可以在 harbor.cfg 进行修改
在WEB - chart界面可以上传tar.gz / tgz包
# 登录(添加镜像仓库不需要此步骤)
helm registry login -u admin -p H@rb0rPa33wOrd harbor.pretool.cn:4433
# 退出
helm registry logout harbor.pretool.cn:4433
# 添加镜像仓库
helm repo add --username username --password password [NAME] [URL]
helm repo add --username admin --password H@rb0rPa33wOrd dmhubplugin-helm-repo https://harbor.pretool.cn:4433/chartrepo/dmhubplugin
# 安装chart
helm install --version [version] [NAME] [CHART]
helm install --version 0.1.0 dmhubplugin dmhubplugin-helm-repo/dmhubplugin