当前位置: 首页 > article >正文

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

私有镜像仓库

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.kler.cn/news/315136.html

相关文章:

  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第七集:制作小骑士完整的冲刺Dash行为
  • 如何切换淘宝最新镜像源(npm)【2024版】
  • 828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台
  • contenteditable=“true“可编辑div字数限制
  • qwen2.5 vllm推理;openai function call调用中文离线agents使用
  • 基于树莓派ubuntu20.04的ros-noetic小车
  • 程序员软硬通吃的核心竞争力修炼指南
  • 001、GitLabApi使用
  • 存储系统概述
  • 力扣674-最长连续递增序列(Java详细题解)
  • glTF格式:WebGL应用的3D资产优化解决方案
  • 反编译 AndroidManifest.xml文件-android反编译技术
  • 408算法题leetcode--第11天
  • 4.提升客户服务体验:ChatGPT在客服中的应用(4/10)
  • 如何用 HAproxy 实施高可用部署 | OceanBase 实践
  • 深度学习自编码器 - 去噪自编码器篇
  • Vue3.5+ 侦听器的3个更新
  • Java 编码系列:String、StringBuilder 与包装类
  • 前端分段式渲染较长文章
  • SQL_yog安装和使用演示--mysql三层结构
  • Vue.js 组件数据定义:为何使用函数而非对象
  • 微服务注册中⼼2
  • 基于python+django+vue的医院预约挂号系统
  • MySQL系列—11.Redo log
  • el-upload如何自定展示上传的文件
  • [数据集][目标检测]棉花叶子病害检测数据集VOC+YOLO格式977张22类别
  • go项目多环境配置
  • Redis中的数据结构详解与示例
  • Java笔试面试题AI答之单元测试JUnit(7)
  • Winform中使用MySQL数据库