1. 镜像仓库简介
在公司内网环境执行项目 CI/CD 的时候,通常会将服务打成镜像存放到镜像仓库,最常用的镜像仓库是 docker 官方的 docker hub,但有可能因为网络限制和安全等原因,在公司内网无法将镜像上传到 docker hub,这个时候就需要一个私有的镜像仓库来存放镜像了。
目前常用的镜像仓库方案有:
- (1)harbor
- (2)nexus
harbor 是一个开源的镜像仓库,由 go 语言开发,具有免费、轻量、性能好等优点。nexus 有社区版和商业版,功能大而全,除了可以作为镜像源以外,还能作为 yaml 源、pypi 源、maven 仓库。
本次以 harbor 为例,在 Rocky Linux 上部署 harbor,并创建镜像上传到 harbor。
2. 环境准备
- (1)装有 Rocky Linux 操作系统的服务器
- (2)部署有 docker,并正常运行
- (3)安装有 docker-compose
说明:
安装 docker-compose 十分简单,一条命令就行了:
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
3. 部署 harbor
官方下载地址:github.com/goharbor/ha…
可以在官网下载最新的离线安装包:harbor-offline-installer-v2.11.1.tgz
下载之后将安装包上传到服务器安装目录:
解压安装包:
tar xf harbor-offline-installer-v2.11.1.tgz
看下安装包里都有哪些文件:
其中 harbor.v2.11.1.tar.gz 是官方创建的镜像包,将其导入到本地:
docker load -i harbor.v2.11.1.tar.gz
查看下有哪些镜像:
docker images
可以看到除了 harbor 本身的微服务,还包括有 harbor 服务依赖的中间件。
再回头看安装包里面的其他文件,可以看到有个临时的配置文件 harbor.yml.tmpl:
cp harbor.yml.tmpl harbor.yml
看下里面的配置项:
grep -Ev "^$|#" harbor.yml
hostname: reg.mydomain.com # 访问地址
http:
port: 80 # http端口
https:
port: 443 # https端口
certificate: /your/certificate/path
private_key: /your/private/key/path
harbor_admin_password: xxxxxxx # admin账号默认密码
database: # 数据库相关信息
password: root123
max_idle_conns: 100
max_open_conns: 900
conn_max_lifetime: 5m
conn_max_idle_time: 0
data_volume: /data # 数据目录
trivy:
ignore_unfixed: false
skip_update: false
skip_java_db_update: false
offline_scan: false
security_check: vuln
insecure: false
timeout: 5m0s
jobservice:
max_job_workers: 10
job_loggers:
- STD_OUTPUT
- FILE
notification:
webhook_job_max_retry: 3
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /var/log/harbor
_version: 2.11.0
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
interval: 24h
dryrun: false
cache:
enabled: false
expire_hours: 24
主要是要将 hostname 修改为服务器 ip 地址,如果有需要也可以引入证书,基于 https 访问 harbor 服务,因为我这里是测试,所以将 https 相关配置注释掉了(不注释的话,执行 prepare 命令会报错),在生产环境切记用 https 协议访问 harbor 服务。
修改完配置之后,执行 prepare 命令:
./prepare
可以看到生成了一个 docker-compose.yml 文件和一堆配置文件,docker-compose.yml 文件生成在当前目录,其他组件的配置文件生成在 common 目录下了:
万事俱备,可以通过 docker-compose 命令执行安装了:
docker-compose -f docker-compose.yml up -d
可以看到服务都启动成功了,可以通过 docker-compose 命令检查服务是否运行正常,命令如下:
docker-compose ps -a
可以看到服务状态都是健康的。
4. 访问 harbor web 界面
我们之前配的地址是服务器地址,通过这个地址就可以访问 harbor 了。
以上就是 harbor 的管理界面了,到此 harbor 就部署完成了。之后我会教大家如何制作镜像并将镜像上传到 harbor。