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
官方下载地址:https://github.com/goharbor/harbor/tags
可以在官网下载最新的离线安装包: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。