harbor
开源的企业级的docker仓库软件。
仓库:私有仓库(用的最多) 公有仓库。
harnor是有图形化的,页面UI展示的一个工具。操作起来很直观。
harnor每个组件都是由容器构建的,所以安装harbor必须要有docker。
docker-compose一键编排,所以也是需要安装的。
harbor特性
1、通过角色对权限进行控制,用户和仓库都是基于项目进行组织。不同的用户在不同的项目中拥有不同的权限
2、镜像复制,每个仓库(之间可以通信)之间可以互相复制里面的镜像
3、UI界面可以对镜像进行删除,删除了之后也会释放本机的空间
4、图形化界面,可以用浏览器访问的
5、审计管理,所有对镜像操作都有记录,
harbor组件
1、porxy:nginx的前端页面,nginx的配置中做个反向代理。浏览器不同的请求转发到后端不同的容器中
2、registry:仓库,保存镜像,同时主要作用push、pull
3、core services:harbor的核心功能,对用户进行授权。检测仓库内镜像的变化以及token,根据不同的权限给予不同的token。
4、database:负责存储用户的权限,审计日志,docker镜像的分组信息
5、JOB service:镜像复制
6、log collector:日志收集工具
以上组件都是由容器来运行的,用docker-compose一键拉取部署
harbor网页
[root@docker1 harbor]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose [root@docker1 opt]# tar -xf harbor-offline-installer-v2.8.1.tgz #准备环境 [root@docker1 harbor]# ./prepare #启动harbor [root@docker1 harbor]# ./install.sh #设置标签名 [root@docker1 harbor]# docker tag nginx:1.22 192.168.65.51/test1/nginx:v1 #公有登录 [root@docker1 harbor]# docker login -u admin -p 123456 http://192.168.65.51 WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get "https://192.168.65.51/v2/": dial tcp 192.168.65.51:443: connect: connection refused #本地登录 [root@docker1 harbor]# docker login -u admin -p 123456 http://127.0.0.1 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@docker1 harbor]# docker tag nginx:1.22 127.0.0.1/test1/nginx:v1 #上传镜像 [root@docker1 harbor]# docker push 127.0.0.1/test1/nginx:v1 The push refers to repository [127.0.0.1/test1/nginx] 9543dec06aa8: Pushed ccf4f419ba49: Pushed 21f8452ebfb1: Pushed 25bbf4633bb3: Pushed a4f34e6fb432: Pushed 3af14c9a24c9: Pushed v1: digest: sha256:9081064712674ffcff7b7bdf874c75bcb8e5fb933b65527026090dacda36ea8b size: 1570 #客户端上传 [root@docker1 harbor]# vim /usr/lib/systemd/system/docker.service 需要修改的配置 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.65.51 --containerd= /run/containerd/containerd.sock #修改配置后重启服务 [root@docker1 harbor]# systemctl daemon-reload [root@docker1 harbor]# systemctl restart docker #退出登录 [root@docker1 harbor]# docker logout Removing login credentials for https://index.docker.io/v1/ #登录客户端 [root@docker1 harbor]# docker login -u admin -p 123456 http://192.168.65.51 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@docker1 harbor]# docker push 192.168.65.51/test1/nginx:v1 The push refers to repository [192.168.65.51/test1/nginx] 9543dec06aa8: Layer already exists ccf4f419ba49: Layer already exists 21f8452ebfb1: Layer already exists 25bbf4633bb3: Layer already exists a4f34e6fb432: Layer already exists 3af14c9a24c9: Layer already exists v1: digest: sha256:9081064712674ffcff7b7bdf874c75bcb8e5fb933b65527026090dacda36ea8b size: 1570 #下载镜像就直接在harbor页面上复制粘贴到命令行直接运行就行
角色:
1、先添加用户,用户就是一个普通用户,私有项目是无法浏览的
2、要浏览私有项目,必须要项目中添加成员,设定成员的角色。
受限访客:只能看,不能上传,也不能下载,也没有其他权限
访客:拥有只读权限,可以拉取镜像,不能上传,也无法删除镜像
开发者:可以读写,但是没有删除权限
维护人员:有读写权限也可以对项目的配置进行修改
管理员:读写、修改、删除都可以
项目流程图
1