Harbor(港口,港湾)是一个用于存储和分发Docker镜像的企业级Registry服务器。除了Harbor这个私有镜像仓库之外,还有Docker官方提供的Registry。相对Registry,Harbor具有很多优势:
1. 提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
2. 提供WEB界面,优化用户体验 只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
3. 支持水平扩展集群 当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
4. 良好的安全机制 企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。
一、Harbor的安装
1.先安装docker并启动docker,如果对docker的安装不了解的可以看一下我的这篇文章
https://blog.csdn.net/axibazZ/article/details/118311181
2.安装docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/dockercompose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
3.添加docker-compose执行权限
sudo chmod +x /usr/local/bin/docker-compose
4.查看docker-compose是否安装成功
docker-compose -version
5.下载Harbor的压缩包,下载地址为https://github.com/goharbor/harbor/releases,这里下载的版本为1.9.2
6.上传压缩包到服务器,解压,并移动到/opt/harbor目录下
tar -xzf harbor-offline-installer-v1.9.2.tgz
mkdir /opt/harbor
mv harbor/* /opt/harbor
7.修改Harbor的配置
vi harbor.yml
修改hostname和port
hostname: 192.168.142.131
port: 85
8.安装Harbor
./prepare
./install.sh
9.启动Harbor
docker-compose up -d 启动
docker-compose stop 停止
docker-compose restart 重新启动
10.访问Harbor
输入用户名密码 admi/Harbor12345(这是默认的用户名和密码,可以在harbor.yml中设置)
二、在Harbor中创建用户和项目
1.创建项目
Harbor的项目分为公开和私有的:
公开项目:所有用户都可以访问,通常存放公共的镜像,默认有一个library公开项目。
私有项目:只有授权用户才可以访问,通常存放项目本身的镜像。
创建一个csii的项目
2.创建用户,在用户管理下新建一个用户
3.将私有项目分配给用户,点击项目,选择需要添加的项目,点击成员,输入成员姓名,并分配角色,这里分配为开发人员。
角色权限说明
访客:对于指定项目拥有只读权限
开发人员:对于指定项目拥有读写权限
维护人员:对于指定项目拥有读写权限,创建 Webhooks
项目管理员:除了读写权限,同时拥有用户管理/镜像扫描等管理权限
三、把镜像上传到Harbor
1.给镜像打上标签
docker tag redis 192.168.142.131:85/csii/redis:v1
打完标签之后的镜像如下
2.推送镜像
docker push 192.168.142.131:85/csii/redis:v1
这样就表示推送成功了
可以在Harbor服务器上看到推送的镜像
如果看到以下错误,则需要将Harbor服务添加到Docker信任列表
The push refers to repository [192.168.142.131:85/csii/redis]
Get https://192.168.142.131:85/v2/: http: server gave HTTP response to HTTPS
client
3.把Harbor地址加入到Docker信任列表中,并重启Docker
vi /etc/docker/daemon.json
#添加insecure-registries
{
"registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.142.131:85"]
}
4.再次执行推送命令,会提示权限不足
denied: requested access to the resource is denied
5.登录Harbor
docker login -u 用户名 -p 密码 192.168.142.131:85
6.再次推送就可以成功推送。
四、从Harbor下载镜像
Harbor服务器在192.168.142.131上,我们在192.168.142.128上完成从Harbor下载镜像
1.安装Docker,并启动Docker
2.修改Docker配置,并重启Docker
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.142.131:85"]
}
3.先登录,再从Harbor下载镜像
docker login -u 用户名 -p 密码 192.168.142.131:85
4.拉取镜像
docker pull 192.168.142.131:85/csii/redis:v1
拉取结果使用docker images 命令可以看到
到此,Harbor的简单使用就结束了。