安装Harbor之前必须保证系统已安装docker和docker-compose。
一、安装docker
二、安装docker-compose
Harbor对docker-compse的版本是有要求的,要高于1.19版本。这里我安装的是1.25版本。
1、在线安装
下载路径是【/usr/local/bin/】下载完之后可以看下【/usr/local/bin】这个目录有没有【docker-compose】文件。
curl -L https://dn-dao-github-mirror.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
赋予可执行权限
# 给docker-compose添加执行权限
chmod +x /usr/local/bin/docker-compose
# 可以省略这一步 ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 查看docker-compose是否安装成功
docker-compose -version
2、离线安装
到 docker-compose官网 下载指定版本的源文件。
1、https://github.com/docker/compose/releases下载指定版本的源文件,上传到/usr/local/bin路径
2、chmod +x /usr/local/bin/docker-compose
3、docker-compose --version
3、基础使用命令
#前台启动
docker-compose up
# 后台启动
docker-compose up -d
# 停止容器
docker-compose down
# 停止容器并移除数据
docker-compose down -v
三、安装Harbor
1、下载Harbor安装包
到 Harbor官方 下载安装包。
#上传压缩包到linux,并解压
tar -zxvf harbor-offline-installer-v2.1.6.tgz -C /usr/local/soft/
2、修改Harbor的配置文件
进入/usr/local/soft/harbor目录 然后将harbor.yml.tmp复制一份并命名为harbor.yml,harbor.yml就是harbor的配置文件。
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
文件开头的hostname一定要修改,可以改成系统的实际地址。配置中注释也说得很清楚,不能使用localhost或者127.0.0.1,因为harbor需要被外部客户端访问。
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: ip
http和https配置根据实际需要二者取其一,另一个注释掉。
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
#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
UI界面的管理员密码,默认Harbor12345,可以根据实际需求修改。
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: Harbor12345
其他配置可保持不变或根据需求修改。
3、执行安装命令
# 预处理命令,会创建一些文件夹,初始化一些文件
./prepare
# 真正的安装命令,--with-trivy表示启用镜像扫描功能并使用trivy扫描器
./install.sh --with-trivy
最后出现下图,表示安装成功。
4、启动和停止
# 后台启动
docker-compose up -d
# 停止
docker-compose stop
# 停止,会删除容器
docker-compose down
# 重新启动
docker-compose restart
5、访问Harbor的UI界面
打开浏览器访问,ip为操作系统ip地址,端口为配置文件中http或https配置的端口。用户名为admin,密码为配置文件中配置的密码。
默认账户密码:admin/Harbor12345
6、将仓库添加到docker配置中
修改docker的配置文件 /etc/docker/daemon.json, insecure-registries配置就是Harbor镜像仓库的地址。
{
"insecure-registries": ["ip:80"]
}
修改后,需要重启docker与Harbor
# 重启docker
systemctl daemon-reload
systemctl restart docker
systemctl status docker
# 重启Harbor
docker-compose restart
7、登录与退出Harbor仓库
# 回车后根据提示输入用户名、密码,注意80端口不要省略
docker login ip:80
# 或者一步到位,注意80端口不要省略
docker login ip:80 -u username -p password
# 退出
docker logout
注意80端口不要省略,否则可能会报错,因为Harbor默认使用https的方式登录。
8、推送镜像
本地构建镜像
首先本地要有一个镜像。
标记镜像
给待推送的镜像打标记,打标记命令格式如下:
docker tag SOURCE_IMAGE[:TAG] ip:port/library/REPOSITORY[:TAG]
各参数含义:
- SOURCE_IMAGE[:TAG]表示当前docker已存在的某个版本的镜像;
- library表示的是harbor里头的某个项目名称,表示镜像推送给这个项目;
- 注意,其中ip和端口都不要省(尤其在http协议里头)。
比如我要推送docker-demo到harbor仓库,打的标记如下:
docker tag docker-demo:dev ip:80/library/docker-demo:dev
登录Harbor
# 登录
docker login ip:80 -u admin -p Harbor12345
# 退出
docker logout
推送镜像
harbor推送镜像的命令格式如下:
docker push ip:80/library/REPOSITORY[:TAG]
比如我要推送上面已经打好标记的镜像,命令如下:
docker push ip:80/library/docker-demo:dev
到Harbor上查看
镜像推送成功之后,在harbor上对应的项目里头就可以查看到推送上来的镜像如下:
不同的角色具有不同的权限,可以创建用户,用于管理某个项目。
- 项目管理员:项目管理员有镜像上传/拉取、添加/删除成员、Helm Chart上传/下载、配置管理等权限。该角色在实际的业务场景通常是分配给某个项目的负责人。
- 维护人员拥有超越“开发者”的权限,包括扫描镜像、查看复制任务以及删除镜像和Helm Chart上传/下载、删除的能力。
- 开发者拥有项目的读写权限,即上传镜像到该项目和从该项目拉取镜像、上传/下载HelmChart、查看日志,其它权限没有。
- 访客对指定项目具有只读权限。他们可以拉取和重新标记图像,但不能推送,也可以登录Harbor UI界面。
- 受限访客没有项目的完全读取权限。他们可以拉取图像但不能推送,而且他们看不到日志或项目的其他成员。例如,您可以为来自不同组织的共享项目访问权限的用户创建受限访客。受限访客也可以登录Harbor,但是只具有镜像拉取权限,无法查看日志等权限。