docker-harbor 私有仓库

docker 镜像 容器 仓库

仓库:保存镜像

私有,自定义用户的形式登录仓库,拉取或者上传镜像。(内部隔离的用户)

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

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

harbor的特性:

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

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

3,harbor自带一个数据库,AD/LDAP(类似于数据库中的表),对以及存在的用户进行日志和管理。

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

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

6,审计管理,使用对进行仓库的存在都可以被记录溯源。

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

harbor的组件:

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

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

3,CORE SERVICES: Harbor的核心功能:提供3个服务:

一,UI:提供图形化界面。

二,Webhook:仓库上使用镜像的变化 (增删改),都会传送给webhook,一实现在UI界面上。

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

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

五,job service:主要用于镜像的复制,本地镜像可以同步到远程harbor上

六,log collector(harbor-log):统一日志收集工具。

harbor都是基于docker容器化部署的,docker-compose一键编排,安装。

实验:

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

docker2 客户端 docker-ce har-bor docker-compose

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

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

cd /opt

安装docker-compose

mv docker-compose-linux-x86_64 docker-compose

mv docker-compose /usr/local/bin/

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

docker-compose -v

安装harbor

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

hostname: 192.168.176.81

修改为本机地址

harbor_admin_password: 123456

可以修改密码

将https注释

安装:

编译环境:

./prepare

执行脚本:

./install.sh

可以访问页面了

上传镜像

本地主机上传。

拉一个镜像:

docker pull nginx:1.22.0

换标签

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

上传:

docker push 127.0.0.1/library/nginx:cc1

报错:

要先登录才能上传:

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

docker push 127.0.0.1/library/nginx:cc1

用新建用户上传

docker login -u chencheng -p Chencheng123 http://127.0.0.1

换标签

docker tag nginx:1.22.0 127.0.0.1/cctest/nginx:cc2

上传: docker push 127.0.0.1/cctest/nginx:cc2

报错:

没有给用户添加角色为开发者

上传成功

角色:

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

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

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

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

从另一台机子上传

docker login -u chencheng -p Chencheng123 http://192.168.176.81

报错:docker-harbor默认使用http端口,没有的化修改配置文件

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

删除后面的,修改

ExecStart=/usr/bin/dockerd --insecure-registry 192.168.176.81

systemctl daemon-reload

systemctl restart docker

docker login -u chencheng -p Chencheng123 http://192.168.176.81

登录成功:

docker pull logstash

改标签

docker tag logstash:latest 192.168.176.81/cctest/logstash:cc3

docker push 192.168.176.81/cctest/logstash:cc3

实现仓库之间同步:

查看仓库中的镜像

cd /data/registry/docker/registry/v2/repositories/cctest/

在docker3:192.168.176.83

安装harbor docker-compose

12345

把81的镜像拉到83上

只会拉取公开的

可以改变

相关推荐
乘云数字DATABUFF3 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
Patrick_Wilson4 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy4 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭4 天前
运行你的第一个Docker容器
后端·docker·容器
荣--5 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森5 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
宋均浩5 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
Avan_菜菜6 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
程序员老赵6 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1116 天前
LM Studio Docker 部署——本地大模型一键启动
docker