文章目录
Harbor
一、Harbor
Harbor(港口,港湾)是一个用于存储和分发Docker镜像的企业级Registry服务器
Docker官方提供的镜像仓库Registry
1、harbor简介
Harbor 是由 VMware 公司中国团队为企业用户设计的 Registry server 开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能
2、harbor的概述
#Harbor相对于Registry服务器的优势:
1》提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
2》 提供WEB界面,优化用户体验 只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像
3.》支持水平扩展集群 当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解
4》良好的安全机制 企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,
具有更好的安全性
二、Harbor安装
Harbor需要在Docker与Docker-compose组件上运行
1、安装Docker
2、安装docker-compose
# 下载安装包
[root@docker ~]# sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
[root@docker ~]# sudo chmod +x /usr/local/bin/docker-compose
#给docker-compose添加执行权限
[root@docker ~]# ll /usr/local/bin/ | grep docker-compose
-rw-r--r-- 1 root root 12218968 8月 17 22:53 docker-compose
[root@docker ~]# sudo chmod +x /usr/local/bin/docker-compose
#查看docker-compose是否安装成功
[root@docker ~]# docker-compose --version
docker-compose version 1.27.4, build 40524192
3、安装Harbor
下载Harbor的压缩包(版本为:v1.9.2)
#解压harbor包
[root@docker ~]# ll -h
总用量 601M
-rw-r--r-- 1 root root 601M 8月 17 23:13 harbor-offline-installer-v2.3.1-1.tgz
[root@docker ~]# tar xf harbor-offline-installer-v2.3.1-1.tgz
ll -h
总用量 601M
drwxr-xr-x 2 root root 122 8月 17 23:16 harbor
#创建harbor工作目录
[root@docker ~]# mkdir /opt/harbor
[root@docker ~]# mv harbor/* /opt/harbor
#配置文件修改:主机地址及端口
[root@docker ~]# cd /opt/harbor
[root@docker ~]# vim harbor.yml
#修改hostname和port
hostname: 192.168.15.57
port: 88
#安装harbor
(当前路径执行 :/opt/harbor)
[root@docker /opt/harbor]# ./prepare
prepare base dir is set to /opt/harbor
Unable to find image 'goharbor/prepare:v2.3.1' locally
v2.3.1: Pulling from goharbor/prepare
2f0af7491ce3: Pull complete
7dd5e4229ec6: Pull complete
cda5f8f8a1f8: Pull complete
3404538ae5c9: Pull complete
991d1829b2c3: Pull complete
73acb2531ec7: Pull complete
52707cc5b93e: Pull complete
3104331c643d: Pull complete
Digest: sha256:ad8c463ad05e7c16c9ffd518704ce32e5361effa18c467317b87446aac0199f0
Status: Downloaded newer image for goharbor/prepare:v2.3.1
[root@docker /opt/harbor]# ./install.sh
[Step 0]: checking if docker is installed ...
Note: docker version: 20.10.7
[Step 1]: checking docker-compose is installed ...
Note: docker-compose version: 1.27.4
[Step 2]: loading Harbor images ...
.........
.....
[Step 5]: starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-portal ... done
Creating redis ... done
Creating registry ... done
Creating harbor-db ... done
Creating registryctl ... done
Creating harbor-core ... done
Creating harbor-jobservice ... done
Creating nginx ... done
✔ ----Harbor has been installed and started successfully.----
#启动Harbor
docker-compose up -d 启动
docker-compose stop 停止
docker-compose restart 重新启动
[root@docker /opt/harbor]# docker-compose up -d #启动harbor
harbor-log is up-to-date
registry is up-to-date
Recreating registryctl ...
harbor-db is up-to-date
redis is up-to-date
Recreating registryctl ... done
Recreating harbor-core ... done
Recreating harbor-jobservice ...
Recreating harbor-jobservice ... done
#测试访问Harbor
http://192.168.15.57:88
登录harbor
默认账户密码:admin:Harbor12345
三、使用harbor
1、Harbor创建用户
创建用户
2、Harbor创建项目
3、给私有项目分配用户
进入test项目 -> 成员
角色 | 权限说明 |
---|---|
访客 | 对于指定项目拥有只读权限 |
开发人员 | 对于指定项目拥有读写权限 |
维护人员 | 对于指定项目拥有读写权限,创建 Webhooks |
项目管理员 | 除了读写权限,同时拥有用户管理/镜像扫描等管理权限 |
4、使用新用户登录Harbor
5、镜像上传到Harbor
#登录harbor仓库(错误请跳过,下面有对策)
[root@docker /opt/harbor]# docker login -u hzl -p Hzl@20144 192.168.15.57:88
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
#打标签
[root@docker /opt/harbor]# docker tag nginx:latest 192.168.15.57:88/test/nginx:v1
#上传镜像
[root@docker /opt/harbor]# docker push 192.168.15.57:88/test/nginx:v1
The push refers to repository [192.168.15.57:88/test/nginx]
e3135447ca3e: Pushed
b85734705991: Pushed
988d9a3509bb: Pushed
59b01b87c9e7: Pushed
7c0b223167b9: Pushed
814bff734324: Pushed
v1: digest: sha256:3f13b4376446cf92b0cb9a5c46ba75d57c41f627c4edb8b635fa47386ea29e20 size: 1570
错误问题:http: server gave HTTP response to HTTPS client
以上报错,是因为Docker没有把Harbor加入信任列表中,把Harbor地址加入到Docker信任列表即可
#增加配置文件即可(解决方式)
[root@docker /opt/harbor]# cat /etc/docker/daemon.json
{ "insecure-registries":["192.168.15.57:88"] }
#修改好后重启docker服务
[root@docker /opt/harbor]# systemctl daemon-reload
[root@docker /opt/harbor]# systemctl restart docker
denied: requested access to the resource is denied