目录
前言
在实际工作中,我们一般都是要部署自己的私有仓库的平台,如 Gitlab、Maven、Harbor等。今主要介绍的是 Harbor 私有镜像仓库的部署过程,首先介绍一下什么是 Harbor:Harbor is an open source registry that secures artifacts with policies and role-based access control, ensures images are scanned and free from vulnerabilities, and signs images as trusted. 简单的理解就是,Harbor 是基于镜像复制策略和角色访问控制的开源注册表。
一、规划
1.1 服务规划
OS | server | version | 备注 |
---|---|---|---|
CentOS7.8(162.14.76.192)-4C/8G/50G | docker | 18.06.3 | 私有镜像仓库 |
docker-compose | 2.1.1 | ||
Harbor | 2.3.4 | ||
CentOS7.8(162.16.234.128)-1C/2G/50G | docker | 18.06.3 | 验证私有镜像仓库可用性 |
1.2 资源下载
二、部署
2.1 Docker 部署
可参照阿里来部署,大家可以去看看,这里就不在演示。
2.2 Docker-Compose 部署
1、资源下载
去 GitHub 下载资源,不过下载非常慢(国外),建议通过迅雷下载,还是比较快的,资源下载地址请看 1.2 小节。
2、将下载资源上传至服务器并做软连接
ln -s /opt/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
3、赋予 x 权限
chmod +x /opt/docker-compose-linux-x86_64
4、查看版本
docker-compose -v
Docker Compose version v2.1.1
2.3 Harbor 部署
1、资源下载
2、将下载资源上传至服务器并解压
tar xzf harbor-offline-installer-v2.3.4.tgz
# 查看一下解压内容
cd harbor && ll
total 596288
-rw-r--r-- 1 root root 3361 Nov 9 19:01 common.sh
-rw-r--r-- 1 root root 610560420 Nov 9 19:01 harbor.v2.3.4.tar.gz
-rw-r--r-- 1 root root 7840 Nov 9 19:01 harbor.yml.tmpl
-rwxr-xr-x 1 root root 2500 Nov 9 19:01 install.sh
-rw-r--r-- 1 root root 11347 Nov 9 19:01 LICENSE
-rwxr-xr-x 1 root root 1881 Nov 9 19:01 prepare
3、修改配置文件
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
# 主要修改以下几部分就可以
hostname: 162.14.76.192 # 服务器IP或域名
http:
port: 80
harbor_admin_password: zhurs@123 # 登录密码
database:
password: root123 # 数据存储密码
max_idle_conns: 100
max_open_conns: 900
data_volume: /data/harbor/data # 数据存储路径(无需手动创建)
trivy:
ignore_unfixed: false
skip_update: false
insecure: false
jobservice:
max_job_workers: 10
notification:
webhook_job_max_retry: 10
chart:
absolute_url: disabled
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /data/harbor/logs # 日志路径(需手动创建,否则报错无法找打路径)
_version: 2.3.0
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- trivy
4、更新配置文件
./prepare
5、安装
./install.sh
6、查看一下容器状态
三、验证
3.1 可用性验证
浏览器输入http://162.14.76.192/
登录用户:admin
登录密码:zhurs@123
登录成功!!
3.2 功能性验证
1、Docker 客户端配置 Harbor 私服连接
cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["162.14.76.192"] }
EOF
2、重启 Docker 客户端
systemctl daemon-reload
systemctl restart docker
3、Docker 客户端登录 Harbor 私服
docker login -u admin -p zhurs@123 162.14.76.192
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
4、任意 pull 一个测试镜像
docker pull busybox
5、将该镜像打 tag 并 push 到 Harbor 镜像仓库
docker tag busybox:latest 162.14.76.192/library/busybox:v1.0
# 查看本地镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
162.14.76.192/library/busybox v1.0 7138284460ff 2 weeks ago 1.24MB
busybox latest 7138284460ff 2 weeks ago 1.24MB
# push到Harbor仓库
docker push 162.14.76.192/library/busybox:v1.0
The push refers to repository [162.14.76.192/library/busybox]
d94c78be1352: Pushed
v1.0: digest: sha256:34efe68cca33507682b1673c851700ec66839ecf94d19b928176e20d20e02413 size: 527
6、在 Harbor web 界面看看 push 的镜像
7、删除本地镜像,并 pull 远程 Harbor 仓库镜像
# 拉取镜像
docker pull 162.14.76.192/library/busybox:v1.0
v1.0: Pulling from library/busybox
e685c5c858e3: Pull complete
Digest: sha256:34efe68cca33507682b1673c851700ec66839ecf94d19b928176e20d20e02413
Status: Downloaded newer image for 162.14.76.192/library/busybox:v1.0
# 查看镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
162.14.76.192/library/busybox v1.0 7138284460ff 2 weeks ago 1.24MB
可通过 web 界面看到我们的操作日志
至此,基本的搭建已经完成!!且测试了 Harbor 私服的可用性。
四、FAQ
4.1 路径问题
1、数据路径
在配置文件中定义,定义后无需手动创建(当然也可手动创建),在执行./install.sh
后会自动创建。
2、日志路径
指定路径后需要手动创建,否则报错(找不到日志路径),我测试的时候是这样的,不知道各位小伙伴是什么测试结果。
3、配置文件路径
需进入 Harbor 解压目录执行相关操作,包括配置文件,脚本执行等操作,当然你也可以做相关的软连接统一目录结构。
4.2 服务器重启问题
对 Harbor 所在的服务器重启后,可能无法正常访问 Harbor,如下图所示,这是重启后一些服务的状态,明显看到有好几个服务已经宕掉了。
解决的方法就是:进入 Harbor 的解压目录并执行./install.sh
,直到显示如下图后,就可正常访问了。
4.3 配置文件修改
当我想修改 Harbor web 端口为 82 时,只需修改 harbor.yml
文件的 port,修改完成后直接执行 ./install.sh
即可生效,如下图是修改后的登录结果,如果是云服务,注意安全组开放访问端口。
总结
以上就是 Harbor 私服的部署过程,其实部署很简单,没有什么技术可言,只是简单的记录一下,部署过程也基本上是一键部署。更多的还是需要我们了解 Docker 的工作原理、底层技术,以及部署 Harbor 的目的和意义。