【Docker--harbor私有仓库部署与管理】

news2024/9/25 9:40:13

目录

  • 一、Harbor 部署
    • 1. 部署 Docker-Compose 服务
    • 2. 部署 Harbor 服务
      • (1)下载或上传 Harbor 安装程序
      • (2)修改harbor安装的配置文件
    • 3. 启动 Harbor
    • 4. 查看 Harbor 启动镜像
    • 5. 创建一个新项目
      • 1、在虚拟上进行登录 Harbor
      • 2、下载镜像进行测试
      • 3、将镜像打标签
      • 4、上传镜像到 Harbor
    • 6. 在其他客户端上传镜像
      • (1)在 Docker 客户端配置操作
  • 二、维护管理Harbor
    • 1. 通过 Harbor Web 创建项目
    • 2. 创建 Harbor 用户
      • (1)创建用户并分配权限
      • (2)添加项目成员
      • (3)在客户端上使用普通账户操作镜像
    • 3. 查看日志
    • 4. 修改 Harbor.cfg 配置文件
    • 5. 移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移
    • 6. 如需重新部署,需要移除 Harbor 服务容器全部数据


Harbor服务器			192.168.102.10		docker-ce、docker-compose、harbor-offline-v1.2.2
client服务器			192.168.102.20  	docker-ce

一、Harbor 部署

1. 部署 Docker-Compose 服务

下载或者上传 Docker-Compose

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose -v

在这里插入图片描述

2. 部署 Harbor 服务

(1)下载或上传 Harbor 安装程序

Harbor的压缩包下载地址:https://github.com/goharbor/harbor/releases
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

(2)修改harbor安装的配置文件

vim /usr/local/harbor/harbor.yml
--5行--修改,设置为Harbor服务器的IP地址或者域名
hostname = 192.168.80.10
--27行--指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345
harbor_admin_password = Harbor12345

在这里插入图片描述

3. 启动 Harbor

cd /usr/local/harbor/
在配置好了 harbor.cfg 之后,执行 ./prepare 命令,为 harbor 启动的容器生成一些必要的文件(环境)
再执行命令 ./install.sh 以 pull 镜像并启动容器

在这里插入图片描述

4. 查看 Harbor 启动镜像

cd /usr/local/harbor/
docker-compose ps
docker-compose up -d      #启动
docker-compose stop       #停止
docker-compose restart    #重新启动

在这里插入图片描述

5. 创建一个新项目

(1)浏览器访问:http://192.168.80.10 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345

(2)输入用户名和密码登录界面后可以创建一个新项目。点击“+项目”按钮

(3)填写项目名称为“myproject-kgc”,点击“确定”按钮,创建新项目

(4)此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,Registry 服务器在端口 80 上侦听。

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

1、在虚拟上进行登录 Harbor

docker login -u admin -p Harbor12345 http://127.0.0.1

在这里插入图片描述

2、下载镜像进行测试

docker pull nginx

在这里插入图片描述

3、将镜像打标签

格式:docker tag 镜像:标签  仓库IP/项目名称/镜像名:标签
docker tag nginx:latest 127.0.0.1/myproject-dz/nginx:v1

4、上传镜像到 Harbor

docker push 127.0.0.1/myproject-dz/nginx:v1

在这里插入图片描述

(5)在 Harbor 界面 myproject-kgc 目录下可看见此镜像及相关信息

在这里插入图片描述

6. 在其他客户端上传镜像

以上操作都是在 Harbor 服务器本地操作。如果其他客户端登录到 Harbor,就会报如下错误。出现这问题的原因为Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

docker login -u admin -p Harbor12345 http://192.168.102.10
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.102.10/v2/: dial tcp 192.168.102.10:443: connect: connection refused

在这里插入图片描述

(1)在 Docker 客户端配置操作

解决办法是:在 Docker server 启动的时候,增加启动参数,默认使用 HTTP 访问。

vim /usr/lib/systemd/system/docker.service
--13行--修改
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.102.10 --containerd=/run/containerd/containerd.sock
或
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.102.10

在这里插入图片描述

重启 Docker,再次登录,发现可以登录成功

systemctl daemon-reload
systemctl restart docker

在这里插入图片描述

下载镜像进行测试

docker pull 192.168.102.10/myproject-dz/nginx:v1

在这里插入图片描述

上传镜像进行测试

docker pull cirros
docker tag cirros:latest 192.168.102.10/myproject-dz/cirros:v2
docker push 192.168.102.10/myproject-dz/cirros:v2

在这里插入图片描述

进入浏览器进行查看刷新
在这里插入图片描述

二、维护管理Harbor

1. 通过 Harbor Web 创建项目

在 Harbor 仓库中,任何镜像在被 push 到 regsitry 之前都必须有一个自己所属的项目。
单击“+项目”,填写项目名称,项目级别若设置为"私有",则不勾选。如果设置为公共仓库,则所有人对此项目下的镜像拥有读权限,命令行中不需要执行"Docker login"即可下载镜像,镜像操作与 Docker Hub 一致。

2. 创建 Harbor 用户

(1)创建用户并分配权限

在 Web 管理界面中单击系统管理 -> 用户管理 -> +用户,
填写用户名为“dz-zhangsan”,邮箱为“dz-zhangsan@dz.com”,全名为“zhangsan”,密码为“Abc123456”,注释为“管理员”(可省略)。
附:用户创建成功后,单击左侧“…”按钮可将上述创建的用户设置为管理员角色或进行删除操作,本例不作任何设置。

角色权限说明
访客对于指定项目拥有只读权限
开发人员对于指定项目拥有读写权限,但没用删除权限
维护人员对于指定项目拥有读写权限,也能对修改其它配置,比如创建 Webhooks
项目管理员除了读写权限,同时拥有用户管理/镜像扫描等管理权限

(2)添加项目成员

单击项目 -> myproject-kgc-> 成员 -> + 成员,填写上述创建的用户 kgc-zhangsan 并分配角色为“开发人员”。
附:此时单击左侧“…”按钮仍然可对成员角色进行变更或者删除操作

(3)在客户端上使用普通账户操作镜像

//删除上述打标签的本地镜像
docker rmi 192.168.80.10/myproject-dz/cirros:v2

//先退出当前用户,然后使用上述创建的账户dz-zhangsan 登录
docker logout 192.168.80.10

docker login 192.168.80.10
或
docker login -u dz-zhangsan -p Abc123456 http://192.168.80.10

//下载和上传镜像进行测试
docker pull 192.168.80.10/myproject-dz/cirros:v2

docker tag cirros:latest 192.168.80.10/myproject-dz/cirros:v3
docker push 192.168.80.10/myproject-dz/cirros:v3

3. 查看日志

Web 界面日志,操作日志按时间顺序记录用户相关操作

4. 修改 Harbor.cfg 配置文件

要更改 Harbor的配置文件中的可选参数时,请先停止现有的 Harbor实例并更新 Harbor.cfg;然后运行 prepare 脚本来填充配置; 最后重新创建并启动 Harbor 的实例。

使用 docker-compose 管理 Harbor 时,必须在与 docker-compose.yml 相同的目录中运行。
cd /usr/local/harbor
docker-compose down -v

vim harbor.cfg			#只能修改可选参数

./prepare

docker-compose up -d
//如果有以下报错,需要开启防火墙 firewalld 服务解决
Creating network "harbor_harbor" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-b53c314f45e8 -j RETURN: iptables: No chain/target/match by that name.
 (exit status 1))

systemctl restart firewalld.service
docker-compose up -d

5. 移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移

//在Harbor服务器上操作
(1)移除 Harbor 服务容器
cd /usr/local/harbor
docker-compose down -v

(2)把项目中的镜像数据进行打包
//持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor/目录下
ls /data/registry/docker/registry/v2/repositories/myproject-kgc
cd /data/registry/docker/registry/v2/repositories/myproject-kgc
tar zcvf kgc-registry.tar.gz ./*

6. 如需重新部署,需要移除 Harbor 服务容器全部数据

cd /usr/local/harbor
docker-compose down -v
rm -r /data/database
rm -r /data/registry

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/796704.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT连接Mysql数据库

文章目录: 一:准备工作 1.确保QT有Mysql驱动 2.创建数据库和表 二:连接数据库 1.目录结构 2.编辑pro文件 3.编辑.cpp文件 4.运行结果 一:准备工作 1.确保QT有Mysql驱动 这个是QT自己没有的,需要单独下载 不然就…

透过黑马程序员7月就业数据,看下半年经济复苏及数字化人才发展趋势

近日,黑马程序员深圳校区发布了一则就业数据,引得网友围观,其中,Java138期毕业当天就业率达到60.94%,平均就业薪资10148元;Java139期毕业后1个工作日就业率达到了73.13%,平均薪资10505元&#x…

关于anki的一些思考

文章目录 通常情况下选择什么模板制卡?一张填空卡片的填空数量到底要多少才合适? 通常情况下选择什么模板制卡? 通常情况是指知识是以一段文字的形式呈现,而不是这些:单词、选择题、成语等(这些都可以定制…

【机器学习】 奇异值分解 (SVD) 和主成分分析 (PCA)

一、说明 在机器学习 (ML) 中,一些最重要的线性代数概念是奇异值分解 (SVD) 和主成分分析 (PCA)。收集到所有原始数据后,我们如何发现结构?例如,通过过去 6 天…

Java后端开发 —— 记录一个spring入门案例

前言 最近荔枝在转技术栈呢,后端Java零零散散也学了半个月,在一边总结blog输出的同时一遍实操项目。最近学完JavaSE部分的重点之后荔枝来入手spring框架,说起spring其实大家耳熟能详的就想起IoC和AOP了,但在这篇文章荔枝主要还是梳…

Ubuntu22.04 安装Anaconda

文章目录 1.下载Anaconda2.安装Anaconda3.启动环境4.常用命令4.1创建虚拟环境4.2查询当前系统conda虚拟环境4.3挂载虚拟环境4.4退出虚拟环境4.5查看已安装的工具包4.6删除虚拟环境 1.下载Anaconda (1)下载地址:https://mirrors.tuna.tsinghu…

低代码开发重要工具:jvs-flow(流程引擎)审批功能配置说明

流程引擎场景介绍 流程引擎基于一组节点与执行界面,通过人机交互的形式自动地执行和协调各个任务和活动。它可以实现任务的分配、协作、路由和跟踪。通过流程引擎,组织能够实现业务流程的优化、标准化和自动化,提高工作效率和质量。 在企业…

无涯教程-jQuery - jQuery.ajax( options )方法函数

jQuery.ajax(options)方法使用HTTP请求加载远程页面。 $.ajax()返回它创建的XMLHttpRequest。在大多数情况下,您不需要该对象直接进行操作,但是如果您需要手动中止请求,则可以使用该对象。 jQuery.ajax( options ) - 语法 $.ajax( options…

Talk | 卡内基梅隆大博士生侯博涵:MLC-LLM-机器学习编译与在大语言模型上的应用

本期为TechBeat人工智能社区第516期线上Talk! 北京时间7月26日(周三)20:00, 卡内基梅隆大博士生—侯博涵的Talk已经准时在TechBeat人工智能社区开播了! 他与大家分享的主题是: “MLC-LLM-机器学习编译与在大语言模型上的应用”,与…

服务器VNC软件与服务器中Sentaurus TCAD软件相关问题汇总(持续更新中)

目录 license失效问题个人端口的VNC无法连接/系统页面失效(无最小化、关闭等)也可以用该方法重启VNC后端口发生混乱/断电后个人端口无法连接操作的步骤在Centos环境下给Sentaurus TCAD安装编辑器jeditSSH重启VNC rootCentos查看NETMASK,GATWAY,DNS licen…

基于vue3.0实现vr全景编辑器

随着社会的不断发现,现实生活中有很多时候会使用到全景现实,比如房地产行业vr看房,汽车行业vr看车之类的,全景可视化真实还原了现场的场景,真正做到沉浸式体验。 现在我们基于vue3.0版本开发出了一款沉浸式的编辑器&a…

拿捏 ---> 水仙花数+变种水仙花数

文章目录 题目描述(水仙花数)思路代码示例方法一方法二 题目描述(变种水仙花数)思路代码示例 题目描述(水仙花数) 求出0~1000之间的所有“水仙花数”并输出。“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身&a…

ThinkPHP8知识详解:ThinkPHP8特性和功能介绍

ThinkPHP8 是一个开源的 PHP 框架,采用了面向对象编程和 MVC(Model-View-Controller)设计模式,提供了丰富的功能和易于使用的 API,是一个适用于 web 应用开发的高效框架。 ThinkPHP8具有许多强大的特性和功能&#xf…

k8s容器日志收集方案

背景 由于以下容器本身特性和现有日志采集工具的缺陷,开发者在收集Kubernetes分布式集群日志时常常遇到困扰: 容器本身特性: 采集目标多:容器本身的特性导致采集目标多,需要采集容器内日志、容器stdout。对于容器…

三分钟带你了解音频转文字哪个好用

在数字世界的角落里,有一项神奇的技术——音频转文字。它隐藏着巨大的力量和惊人的能力。它如同一位神奇的文字解码师,能够将听觉的旋律转化为视觉的符号,让语言的美妙之音在屏幕上跃然纸上。接下来,让我带你进入这个充满奇迹的数…

常用程序分段,编译流程

实际这些概念也要根据不同编译器有些微的区分,常用的结构模型应该就是LINUX程序分段以及GNU编译链的编译留成。 先看编译流程 程序分段: 堆存储和栈存储的区别 堆和栈的区别主要有五大点,分别是: 1、申请方式的不同。栈由系统自动分配&…

tinkerCAD案例:13.Ruler - Cm 标尺 - 厘米

tinkerCAD案例:13.Ruler - Cm 标尺 - 厘米 原文 While it’s fun to create things at any size you wish, sometimes you need to measure an exact distance. In this lesson you will learn to create an accurate ruler that measures centimeters. 虽然创建任…

六、代理模式

文章目录 一、代理模式1、代理模式的好处和缺点1.1 代理模式理解加深 一、代理模式 为什么要学习代理模式? 代理模式是Spring AOP 以及 Spring MVC 的底层!!并且还是 JAVA 的23种设计模式之一!! 代理模式的分类&#…

【TI毫米波雷达笔记】IWR6843AOP工程模板创建 cannot find file “libsleep_xwr68xx.aer4f“等解决方案

【TI毫米波雷达笔记】IWR6843AOP工程模板 cannot find file “libsleep_xwr68xx.aer4f” 解决方案 我在建立工程时 发现了一个问题 参考: blog.csdn.net/qq_16660871/article/details/126246572报错为 cannot find file "libsleep_xwr68xx.aer4f"最后检…

【Linux】深入理解缓冲区

目录 什么是缓冲区 为什么要有缓冲区 缓冲区刷新策略 缓冲区在哪里 手动设计一个用户层缓冲区 什么是缓冲区 缓冲区本质上一块内存区域,用来保存临时数据。缓冲区在各种计算任务中都广泛应用,包括输入/输出操作、网络通信、图像处理、音频处理等。 …