harbor私有镜像仓库,搭建及管理

ops/2024/9/22 21:49:17/

私有镜像仓库

docker-distribution docker的镜像仓库,默认端口号5000

做个仓库,把镜像放里头,用什么服务,起什么容器

vmware公司在docker私有仓库的基础上做了一个web页面,是harbor

docker可以把仓库的镜像下载到本地,也可以直接用私有仓库的镜像启动容器

云服务商的镜像加速器,就是云服务商做的私有镜像仓库,供云服务商的用户使用

registry镜像仓库tag格式

registry:5000/img/img:tag

仓库地址 路径 镜像名称和标签

路径不需要提前创建

~]# docker tag  nginx:latest registry:5000/img/myimg:nginx
#  上传镜像之前,先要给镜像改名字,才能识别把镜像放在什么仓库的什么路径下
~]# docker push  registry:5000/img/myimg:nginx 

镜像仓库的library路径比较特别,是默认路径

创建容器时,不写路径,默认就是library

容器可以映射宿主机的目录

部署harbor镜像仓库

官方把harbor做成了compose项目,

部署harbor服务器:

1. 给harbor主机安装docker环境,因为harbor是以docker-compose的方式部署的

]# dnf -y install docker-ce
]# systemctl enable docker --now

2. harbor仓库没有域名,只能使用主机名。所以要在harbor主机的/etc/hosts做好映射

]# tail -1 /etc/hosts
192.168.1.30  harbor

3. 用跳板机把harbor软件包传给harbor主机,harbor是一个绿色软件,不用安装,解压就可以用,比如解压到/usr/local/目录下

# proxy主机操作]# rsync -av  harbor-v2.9.2.tgz   192.168.1.30:/root/

# harbor主机操作
]# tar  -zxf  harbor-v2.9.2.tgz   -C /usr/local/
]# cd  /usr/local/harbor/
]# tree
.
├── common.sh
├── harbor.v2.9.2.tar.gz           #  镜像
├── harbor.yml.tmpl
├── install.sh
├── LICENSE
└── prepare
]# docker load -i harbor.v2.9.2.tar.gz   # 导入镜像到本地
]# docker images
REPOSITORY                      TAG       IMAGE ID       CREATED        SIZE
goharbor/harbor-exporter        v2.9.2    xxx           x months ago    xxMB
goharbor/redis-photon           v2.9.2    xxx           x months ago    xxMB
goharbor/trivy-adapter-photon   v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-registryctl     v2.9.2    xxx           x months ago    xxMB
goharbor/registry-photon        v2.9.2    xxx           x months ago    xxMB
goharbor/nginx-photon           v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-log             v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-jobservice      v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-core            v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-portal          v2.9.2    xxx           x months ago    xxMB
goharbor/harbor-db              v2.9.2    xxx           x months ago    xxMB
goharbor/prepare                v2.9.2    xxx           x months ago    xxMB

4. harbor用https协议,https需要一个证书,

]# mkdir tls
]# openssl genrsa  -out tls/cert.key 2048        # 创建私钥
]# openssl req -new -x509 -days 3650  -key tls/cert.key -out tls/cert.crt  -subj "/C=CN/ST=SZ/L=SZ/O=HI/OU=HI/CN=harbor"  #生成证书
]# tree tls/
tls/
├── cert.crt
└── cert.key

5. 启动harbor项目

]# mv  harbor.yml.tmpl harbor.yml
]# vim harbor.yml
05:    hostname: harbor
08:    # http:         # 注释掉http,用https
10:      # port: 80
17:    certificate: /usr/local/harbor/tls/cert.crt   # 证书
18:    private_key: /usr/local/harbor/tls/cert.key   # 密钥
36:    harbor_admin_password: <登录密码>           # 自己设置登录密码
]# ./prepare  #检测项目环境,如果OK,就会生成docker-compose.yml项目文件
]# ls
common     docker-compose.yml    harbor.yml  LICENSE  privkey.pem
common.sh  harbor.v2.9.2.tar.gz  install.sh  prepare  tls
]# docker compose -f docker-compose.yml up -d   # 启动docker项目
# harbor这个docker compose项目开机启动
]# chmod  0755  /etc/rc.d/rc.local 
]# echo   "/usr/bin/docker compose -p harbor start"  >> /etc/rc.d/rc.local 

6. 通过ELB负载均衡443端口发布harbor通过https://elb_ipaddress访问harbor仓库

7. 管理员admin,通过菜单栏:系统管理-->用户管理创建普通用户

8. docker1主机进行本机域名解析

~]# tail -1 /etc/hosts
192.168.1.30  harbor

9. harbor仓库信息添加docker主机docker知道这么仓库

添加信任主机(证书,自己做的需要,授权机构认证的不需要)

]# cat /etc/docker/daemon.json
{"registry-mirrors": ["https://harbor:443", "https://words.mirror.swr.examplecloud.com"],"insecure-registries": ["harbor:443"]
]# systemctl restart docker
]# docker info  |grep -A2 harbor 
  harbor:443                  # docker已识别harbor仓库127.0.0.0/8
 Registry Mirrors:
  https://harbor:443/        # docker已识别harbor仓库https://words.mirror.swr.examplecloud.com/
 Live Restore Enabled: false

10. 命令行,用创建普通用户,测试登录登出

]# docker login harbor:443
Username: example_name             #  输入用户名
Password:                            #  输入密码
... Your password will be stored in /root/.docker/config.json
...            #  记录登录信息等于开机自动登录不用手动登录
...
Login Succeeded                 # 登录成功]# docker logout harbor:443
Removing login credentials for harbor:443
~]# cat /root/.docker/config.json
{"auths": {}         # 登录信息会删除
}

11. harborregistry区别 registry可以无视路径上传镜像

12. harbor仓库管理

harbor:443/myimg/img:tag

harbor里面概念项目,在web页面左侧菜单栏,第一字段

harbor项目就是harbor路径项目需要提前创建出来如果不

提前创建出来,这个项目就是无法使用的,

谁创建这个项目项目路径管理其他人使用其他名称其他路径

所以上传镜像需要创建项目

创建项目基于web通过web页面创建项目

登录仓库自定义用户需要这个用户创建项目

项目分为两种

一种公共仓库任何人可以访问下载镜像

一种私有仓库只有认证用户可以访问下载

harbor容器集群核心仓库服务

13. 创建三个harbor项目

公共项目k8splugins

私有项目private

14. 上传镜像harbor项目

harbor仓库不管公共还是私有,想上传镜像,都需要提供用户名密码

如何提供docker login

# docker主机操作
]# docker login harbor:443             #  登录harbor仓库
Username: example_name                  # 普通用户用户名
Password:                               # 此用户密码
]# docker images                        # 查看docker主机本地镜像
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
myos         php-fpm   example      xx months ago   x75MB
myos         nginx     example      xx months ago   x74MB
myos         latest    example     xx months ago   x.67MB
myos         httpd     example      xx months ago   x99MB
myos         8.5       example       xx months ago   x49MB
rockylinux   8.5       example        x years ago     x05MB
]# docker tag myos:httpd harbor:443/private/httpd:latest                       #tag,给本地镜像标签
]# docker push harbor:443/private/httpd:latest #push,上传tag好的镜像到harbor仓库
The push refers to repository [harbor:443/private/httpd]
xxx: Pushed 
xxx: Pushed 
xxx: Pushed 
latest: digest: sha256:xxx size: xxx 

上传成功harborweb页面看到上传镜像httpd

标签可在点击private/httpd看到

15. library项目的所有者是harbor服务器管理员用户

所以普通用户没有权限访问这个项目

如果要访问,需要管理员用户给予权限

授权方法

 管理员用户admin在web界面登录harbor仓库,点击library项目点击菜单栏关键字"成员"添加用户角色选择

授权后,普通用户可以向harbor仓库library项目上传镜像

]# docker push harbor:443/library/myos:latest 
The push refers to repository [harbor:443/library/myos]
xxx: Pushed 
latest: digest: sha256:xxx size: x

docker优秀很多当项目对容器需求量很大docker似乎比较局限于一台机器上运行。大规模集群应用,似乎有一定限制。

大规模容器集群编排管理容易为了解决这个问题各个厂商推出第二个容器管理解决方案就是管理容器集群

docker swarm apache mesoskubernetes

kubernetes符合市场需求

所以现在主流容器集群编排管理工具主要kubernetes也就是k8s

k8s为首时代称为云原生

应该可以这么理解

docker管理容器、镜像以及镜像仓库工具

k8s管理容器集群工具

harbor是提供镜像仓库工具


http://www.ppmy.cn/ops/114432.html

相关文章

关于导出我遇到的问题和理解

await axios.get(${import.meta.env.VITE_API_URL}/cloud-data-acquisition/task/dataConfigCard/export?pinnerIdparam3.pinnerId,{headers:{authorization:Bearer ${Cookies.get(token-base)}}}).then((res)>{// 转换为 Blobconst blob new Blob([res], { type: applica…

SQL进阶技巧:火车票相邻座位预定一起可能情况查询算法 ?

目录 0 场景描述 1 数据准备 2 问题分析 2.1 分析函数法 2.2 自关联求解 3 小结

Flutter Android Package调用python

操作步骤 一、创建一个Flutter Package 使用以下指令创建一个Flutter Package flutter create --templateplugin --platformsandroid,ios -a java flutter_package_python 二、修改android/build.gradle文件 在buildscript——>dependencies中添加以下内容 //导入Chaqu…

Matlab simulink建模与仿真 第十六章(用户定义函数库)

参考视频&#xff1a;simulink1.1simulink简介_哔哩哔哩_bilibili 一、用户定义函数库中的模块概览 注&#xff1a;MATLAB版本不同&#xff0c;可能有些模块也会有差异&#xff0c;但大体上区别是不大的。 二、Fcn/Matlab Fcn模块 1、Fcn模块 双击Fcn模块&#xff0c;在对话…

【Linux】Linux进程的概念

一、冯诺依曼体系结构 我们常见的计算机&#xff0c;比如笔记本&#xff0c;我们不常见的计算机&#xff0c;比如服务器&#xff0c;大部分都遵循冯诺依曼体系结构。 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是有一个一个独立的硬件组成&#xff1a; 输入单元&a…

OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(上)

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——轻量和小型系统三方库移植指南…

UnLua扩展C++函数和蓝图自定义事件

一、通过BlueprintImplementableEvent标记扩展C函数 1、 这个标记表示C不需要实现&#xff0c;让蓝图/Lua重写。 2、首先在C中将LuaImp函数标记为BlueprintImplementableEvent&#xff0c;不需要实现&#xff0c;然后再GetIndex中调用该函数。 MyBaseActor.h UFUNCTION(Bluepr…

探讨基于AI技术的相亲交友系统设计与实现

摘要 随着人工智能技术的发展&#xff0c;相亲交友领域也开始引入AI技术来改善用户体验&#xff0c;提高匹配成功率。本文探讨了如何利用AI技术设计并实现一个智能化的相亲交友系统&#xff0c;该系统能够根据用户的行为数据和个人偏好&#xff0c;自动推荐合适的潜在伴侣。通…