docker-harbor私有仓库

2023-12-14 14:02:51

docker 三大组件 镜像 容器 仓库

仓库:保存镜像

私有,自定义用户的形式登录仓库,拉去或者上传镜像(内部管理的用户)

harbor:是由VMware公司开发的,开源的企业级的docker registry 项目 。

帮助用户快速的搭建一个企业级的docker仓库的服务。

1.harbor的特性

1.基于角色进行控制,用户和仓库都是基于项目进行的,用户在每个项目中可以拥有不同的权限

2.基于镜像,在不同的harbor实例之间进行复制

3.harbor自带一个数据库,AD/LDAP(类似于数据库中的表),用于对已经存在的用户进行认证和管理。

4.镜像删除和垃圾回收,仓库中的镜像可以被删除(基于权限控制的),也可以回收镜像占用的空间。

5.图形化界面的,用户可以直接通过浏览器来对镜像仓库进行管理。

6.审计管理,所有对镜像仓库的操作都可以被记录溯源。

7.支持API操作。

API的程序接口,端口:主机和主机之间的通信,API是应用和应用之间的接口。管理员可以基于API调用接口,和更多的其他的程序进行集成。

2.harbor的组件

1.proxy:安装完了harbor之后,他会自动生成一个nginx的容器,自动对外映射,80端口,nginx的前端代理,在harbor当中 registry,UI,TOKEN 都在nginx的反向代理后面。通过nginx的代理,可以把请求转发到后端不同的应用。

2.Registry:负责存储镜像,docker pull /push的命令都是由其负责。用户进行访问控制,不同的用户对docker镜像有不同的读写权限。Resgistry每次都要会指向一个不同的Token,强制用户每次的pull/push,都必须带一个合法的token(公钥对),Resgistry会通过公钥对,进行解密验证,身份合法才能指定操作。

3.CORE SERVICES:harbor的核心功能:提供三个服务

1.UI:提供图形化界面。

2.webhook:仓库上所有镜像的变化(增删改)都会传送给webhook,以实现在UI界面上。

3.Token:签发每一次push和pull的公钥对,用来和仓库进行权限认证。

4.database:harbor-db 为核心core services 提供数据库存储服务,用户权限,审计日志 docker镜像的分组和项目信息

5.jobservice:主要用于镜像的复制,本地镜像可以同步到远程harbor上

6.log collector(harbor-log) 统一日志收集工具

3.实验

docker1 安装仓库 192.168.233.40 docker-ce har-bor docker-compose

docker2 客户端 192.168.233.50 docker-ce har-bor

docker3 安装仓库-----实现远程同步 192.168.233.60 docker-ce har-bor

所有

systemctl stop firewalld

setenforce 0

docker1

cd /opt

ls

把compose 和harbor 拖进来

mv docker-compose-linux-x86_64 docker-compose

mv docker-compose /usr/local/bin

chmod 777 /usr/local/bin/docker-compose

docker-compose -v

tar -xf harbor-offline-installer-v2.8.1.tgz -C /usr/local

cd /usr/local/harbor/

cp harbor.yml.tmpl harbor.yml

vim harbor.yml

./prepare #编译环境

./install.sh

docker ps

访问192.168.233.40

密码123456

docker pull nginx:1.22.0

docker tag nginx:1.22.0 127.0.0.1/library/nginx:dn1

docker images

docker push 127.0.0.1/library/nginx:dn1

docker login -u admin -p123456 http://127.0.0.1

docker push 127.0.0.1/library/nginx:dn1

新建项目

docker login -u guoqi -p Guoqi666 http://127.0.0.1

docker tag nginx:1.22.0 127.0.0.1/dntest/nginx:gq1

docker push 127.0.0.1/dntest/nginx:gq1

发现权限不够

在项目dntest

docker push 127.0.0.1/dntest/nginx:gq1

##角色:

访客:只有看,只有读权限

开发者:可以有读写权限,但是没有删除权限

维护人员:读写权限,修改其他配置的权限

项目管理员:对该项目拥有所有权限

##

docker2:

vim /usr/lib/systemd/system/docker.service

13 行 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.66.14

systemctl daemon-reload

systemctl restart docker

docker login -u guoqi -p Guoqi666 http://192.168.233.40

docker pull logstash

docker images

docker tag logstash:latest 192.168.233.40/dntest/logstash:gq1

docker push 192.168.233.40/dntest/logstash:gq1

访问192.168.233.40可以见到

docker3:

把compose跟前面一样的操作

把harbor 移到opt

一样的操作

vim harbor.yml

把compose 和harbor 拖进来

mv docker-compose-linux-x86_64 docker-compose

mv docker-compose /usr/local/bin

chmod 777 /usr/local/bin/docker-compose

docker-compose -v

tar -xf harbor-offline-installer-v2.8.1.tgz -C /usr/local

cd /usr/local/harbor/

cp harbor.yml.tmpl harbor.yml

vim harbor.yml

./prepare

./install.sh

192.168.233.60

这时候下面就复制成功了,可以去项目查看结果

文章来源:https://blog.csdn.net/qq_59980732/article/details/134992352
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。