Ubuntu 安装 Harbor
官网地址:https://goharbor.io/
github地址:https://github.com/goharbor/harbor
Harbor 是什么?
Harbor 是一个开源镜像仓库,它通过策略和基于角色的访问控制来保护工件,确保镜像经过扫描且无漏洞,并将镜像签名为可信镜像。Harbor 是一个 CNCF 毕业项目,提供合规性、性能和互操作性,帮助您在 Kubernetes 和 Docker 等云原生计算平台上一致且安全地管理工件。
简单理解:
Docker Hub 是公共镜像仓库,Harbor 是企业内部的“私有 Docker Hub”,有权限控制、日志审计和安全扫描功能。
安装依赖
Harbor 依赖 Docker 和 Docker Compose。先确认是否已安装:
docker -v
docker-compose -v
安装教程:https://blog.csdn.net/a1053765496/article/details/147691484
下载 Harbor
打开 https://github.com/goharbor/harbor
将下载好的 harbor-offline-installer-v2.14.0.tgz 包上传到服务器的 /usr/local 目录中
解压
tar -zxvf /usr/local/harbor-offline-installer-v2.14.0.tgz
配置 Harbor
cd /usr/local/harbor/cp harbor.yml.tmpl harbor.yml
编辑 harbor.yml
sudo vim harbor.yml
hostname: 8.10.10.10 # Harbor 访问域名或IP, 例如ip:hostname: 192.168.1.10 例如域名:harbor.example.comhttp:port: 20375 # 如果不使用https,可配置http端口,如果配置了 https, 则重定向至 HTTPS 端口
harbor_admin_password: "Harbor12345" # Harbor管理员初始登录密码
database:password: "root123" # 数据库密码,请修改此密码。默认数据库是内置的 PostgreSQL# 如果不用 https 把 https 注释掉
#https:
# port: 443
# certificate: /usr/local/harbor/certs/harbor.crt
# private_key: /usr/local/harbor/certs/harbor.key
安装 Harbor
sudo ./install.sh
安装成功显示如下:
安装成功后,如果再想修改 harbor.yml 配置,对于一些轻量配置(如日志级别、jobservice 参数),修改后可以直接 docker-compose down docker-compose up -d 停止重启后生效。
大部分核心配置(hostname、端口、证书、数据库)必须重新安装才能生效。
启动 Harbor
cd /usr/local/harbor/
启动命令
sudo docker-compose up -d
停止命令
sudo docker-compose down
浏览器访问 Harbor
http://<hostname>:20375
用户名:admin
密码:Harbor12345
推送镜像到 Harbor
1. 由于我配置的是 http 的,需要将 hostname 配置到 docker 的 /etc/docker/daemon.json 文件中
编辑 /etc/docker/daemon.json
sudo vim /etc/docker/daemon.json
{"insecure-registries": ["8.10.10.10:20375"]
}
重启 docker
sudo systemctl daemon-reloadsudo systemctl restart dockercd /usr/local/harbor/
sudo docker-compose up -d
2. 登录 Docker
docker login 8.10.10.100:20375
Username: admin
Password: Harbor12345
登录成功后,就可以推送镜像到 Harbor 了
3. 打个新标签 tag
# 给本地已有的镜像 打一个新的标签(tag), 方便上传到仓库
# nginx 表示本地镜像名:版本
# <hostname>/library/nginx:latest 表示新标签(包括仓库地址、项目、镜像名和版本)
# docker tag nginx <hostname>/library/nginx:latest
docker tag nginx 8.10.10.10:20375/library/nginx:latest
4. 推送到远程镜像仓库
# docker push <hostname>/library/nginx:latest
docker push 8.10.10.10:20375/library/nginx:latest
推送完成
拉取 Harbor 的镜像到本地
我们用另一台服务器,拉取刚刚推送上去的镜像
同样先登录,登录成功后拉取
拉取命令
docker pull 8.10.10.10:20375/library/nginx:latest
拉取成功