docker-harbor
docker-harbor 私有仓库部署和管理:
harbor:开源的企业级的docker仓库软件。
仓库:私有仓库(公司内部自己用,遇到最多),公有仓库。
harbor是有图形化的,页面UI展示的一个工具。操作起来很直观。
harbor每个组件都是由容器构建的,所以安装harbor必须要有docker。
docker-compose一键编排,所以也是需要安装的。
harbor特性:
1、通过角色对权限进行控制,用户和仓库都是基于项目进行组织。不同的用户在不同的项目中拥有不同的权限
2、镜像复制,每个仓库(之间可以通信)之间可以互相复制里面的镜像
A <--------- B
NGINX NGINX
HTTP
MYSQL
3、UI界面可以对镜像进行删除,删除了之后也会释放本机的空间
4、图形化界面,可以用浏览器进行访问
5、审计管理,所以对镜像仓库的操作都有记录,用于审计管理
harbor的组件:
主要的组件:
1、porxy:nginx的前端页面,nginx的配置中做个反向代理。浏览器不同的请求转发到后端不同的容器中。
2、Registry:仓库,保存镜像,同时push/pull
3、core services:Harbor的核心功能,对用户进行授权。检测仓库内镜像的变化,以及token,根据不同的权限给予不同的token。
4、database:负责存储用户的权限,审计日志,docker镜像的分组信息
5、JOB services:镜像复制。
6、log collector:日志收集工具
以上组件都是由容器运行,docker-compose一键拉取部署。
客户端:192.168.60.101 docker
服务端:192.168.60.102 harbor docker docker-compose
服务端2:192.168.60.90 harbor docker docker-compose
1、部署服务端
2、客户端和服务端之间上传,下载镜像,权限控制
3、仓库之间的镜像复制。
操作:
[root@docker1 opt]# ls harbor-offline-installer-v2.8.1.tgz [root@docker1 opt]# tar -xf harbor-offline-installer-v2.8.1.tgz [root@docker1 opt]# cd harbor/ [root@docker1 harbor]# cp harbor.yml.tmpl harbor.yml [root@docker1 harbor]# vim harbor.yml5 hostname: 192.168.60.101#指定用户名为IP地址12 # https related config13 #https:14 # https port for harbor, default is 44315 # port: 44316 # The path of cert and key files for nginx17 # certificate: /your/certificate/path18 # private_key: /your/private/key/path#34 harbor_admin_password: 123456#指定密码53 data_volume: /data54 #上传到仓库之后,仓库保存的镜像的路径。 [root@docker1 harbor]# ./install.sh [root@docker1 harbor]# vim /usr/lib/systemd/system/docker.service #在第13行中间加上--insecure-registry 192.168.60.10113 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.60.101 --containerd=/run/containerd/containerd.sock[root@docker1 ~]# systemctl daemon-reload [root@docker1 ~]# systemctl restart docker #给镜像创一个别名 [root@docker1 harbor]# docker tag nginx:1.22 192.168.60.101/test1/nginx:v1 #登录http://192.168.60.101注册表,如果登录成功,Docker CLI会返回Login Succeeded。 [root@docker1 harbor]# docker login -u admin -p 123456 http://192.168.60.101 #将镜像上传到仓库中的项目中 [root@docker1 harbor]# docker push 192.168.60.101/test1/nginx:v1 #从仓库的项目中下载镜像 [root@docker1 harbor]# docker pull 192.168.60.101/test1/nginx:v1
角色:
1、先添加用户,用户就是一个普通用户,私有项目是无法流量的
2、要浏览私有项目,必须要项目中添加成员,设定成员的角色。
受限访客:只能看,不能上传,也不能下载,也没有其他权限
访客:拥有只读权限,可以拉取镜像,不能上传,也无法删除镜像
开发者:可以读写,但是不能删除
维护人员:有读写权限,也可以对项目的权限进行修改
项目管理员:读写、修改、删除
3、仓库之间的镜像复制。
[root@docker2 opt]# ls harbor-offline-installer-v2.8.1.tgz [root@docker2 opt]# tar -xf harbor-offline-installer-v2.8.1.tgz [root@docker2 opt]# cd harbor/ [root@docker2 harbor]# cp harbor.yml.tmpl harbor.yml [root@docker2 harbor]# vim harbor.yml5 hostname: 192.168.60.102#指定用户名为IP地址12 # https related config13 #https:14 # https port for harbor, default is 44315 # port: 44316 # The path of cert and key files for nginx17 # certificate: /your/certificate/path18 # private_key: /your/private/key/path#34 harbor_admin_password: 123456#指定密码 [root@docker2 harbor]# systemctl daemon-reload [root@docker2 harbor]# systemctl restart docker #初始化或准备Harbor的配置文件和环境 [root@docker2 harbor]# ./prepare #启动harbor服务 [root@docker2 harbor]# ./install.sh #用IP地址访问网页