安装Harbor
# 1. 安装Harbor
打开Harbor的Github Release地址 (opens new window),下载离线部署包。
服务器创建目录,/root/soft/docker
mkdir -p /root/soft/docker
上传包到目录下。
解压文件到当前目录
tar -zxvf harbor-offline-installer-v2.12.2.tgz
进入解压后的目录,将harbor.yml.tmpl
文件重命名为harbor.yml
mv harbor.yml.tmpl harbor.yml
修改harbor.yml
文件
#服务地址
hostname: 192.168.127.135
#http访问端口
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https配置,如果不需要开启,就注释掉
#https:
# https port for harbor, default is 443
#port: 443
# The path of cert and key files for nginx
#certificate: /your/certificate/path
#private_key: /your/private/key/path
# enable strong ssl ciphers (default: false)
# strong_ssl_ciphers: false
#管理员密码
harbor_admin_password: Harbor12345
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
保存文件,执行install.sh
,开始安装。
安装完成后,会自动启动服务。
用浏览器访问80端口,输入用户名:admin,输入上面配置好的密码
# 2. docker使用仓库
# 2.1 docker登录harbor
在docker推送或拉取非公开镜像前,需要先使用docker login
命令登录harbor。
docker login -u admin -p Harbor12345 http://192.168.127.135:80
返回http: server gave HTTP response to HTTPS client
的错误信息。这是因为docker客户端默认使用的是https,而我们搭建harbor时,没有开启https。
解决方案有两种
- harbor配置ssl证书,并开启https访问
- 修改docker客户端,针对我们的harbor访问地址开启http
这里我们选择修改docker客户端的方式。
在/etc/docker
目录下,新增daemon.json
配置文件,将harbor的访问地址添加进去
{
"insecure-registries":["192.168.127.135:80"]
}
2
3
保存后,重启docker。
systemctl restart docker
再次执行登录命令。
登录成功后,docker会将登录信息写入当前用户目录下的.docker/config.json
文件中,以后docker重启或者服务器重启,都不再需要再次执行docker login
命令了。
# 2.2 测试推送
harbor的项目有两种访问级别,公开
和私有
。当设置为公开
时,所有人都可以拉取镜像。设置为私有
时,只有指定成员的用户才能访问。
可以使用添加用户的方式,来指定项目成员。
harbor的角色权限
操作 | 项目管理员 | 维护人员 | 开发者 | 访客 | 受限访客 |
---|---|---|---|---|---|
管理项目成员(添加/删除) | ✅ 是 | ❌ 否 | ❌ 否 | ❌ 否 | ❌ 否 |
管理仓库(创建/删除) | ✅ 是 | ✅ 是 | ❌ 否 | ❌ 否 | ❌ 否 |
推送(Push)镜像 | ✅ 是 | ✅ 是 | ✅ 是 | ❌ 否 | ❌ 否 |
拉取(Pull)镜像 | ✅ 是 | ✅ 是 | ✅ 是 | ✅ 是 | ✅ 仅能访问公开项目 |
删除镜像 | ✅ 是 | ✅ 是 | ❌ 否 | ❌ 否 | ❌ 否 |
管理复制规则 | ✅ 是 | ✅ 是 | ❌ 否 | ❌ 否 | ❌ 否 |
管理漏洞扫描 | ✅ 是 | ✅ 是 | ❌ 否 | ❌ 否 | ❌ 否 |
管理项目配额 | ✅ 是 | ❌ 否 | ❌ 否 | ❌ 否 | ❌ 否 |
harbor安装好后,默认有一个公开的项目library
,我们使用另一个安装好docker的服务器,测试一下推送。
先下载一个测试的镜像
docker pull hello-world
然后推送镜像
docker push 192.168.127.135:80/library/hello-world:test
可以看到推送成功了。
# 2.3 测试拉取
使用docker pull
来拉取镜像
docker pull 192.168.127.135:80/library/hello-world:test
可以看到,镜像下载数由0变成了1。