harbor私有镜像仓库高可用部署

news/2024/11/18 15:49:01/文章来源:https://www.cnblogs.com/tianxiang2046/p/18349300

Harbor介绍

harbor是一个docker私有镜像仓库,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目。

Harbor的优势:

图形管理界面。

按项目管理镜像。

独立的用户管理,不同用户可以操作不同镜像,细粒度的权限控制,包含create、push 、pull、delete。

镜像管理。

标签管理。

操作日志管理。

【Harbor 安装步骤】:

一、安装Docker

安装yum的工具包集合
yum install -y yum-utils安装docker仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

卸载docker-ce
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engineyum list installed | grep docker
yum remove -y docker-ce.x86_64rm -rf /var/lib/docker
rm -rf /etc/docker/查看可安装版本
yum list docker-ce --showduplicates | sort -r
安装最新版本
yum -y install docker-ce安装特定版本的docker-ce:
yum -y install docker-ce-23.0.3-1.el7启动docker,并设为开机自启动
systemctl enable docker && systemctl start dockerdocker相关命令:
systemctl stop docker
systemctl start docker
systemctl enable docker
systemctl status docker
systemctl restart docker
docker info
docker --version
containerd --version

二、安装docker-compose

下载 docker-compose离线安装包
https://github.com/docker/compose/releases
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v

三、下载 Harbor离线安装包

   从harbor官网下载离线安装包,下载地址:https://github.com/goharbor/harbor/releases

   下载当前最新版本harbor 2.11.0,离线包大小为629M 。

    下载完离线包之后,将离线安装包【harbor-offline-installer-v2.11.0.tgz】上传到c服务器。比如将文件上传到 /etc/yum.repos.d/harbor-offline-installer-v2.11.0.tgz

四、创建https证书

# 创建证书目录,并赋予权限
mkdir -p /cert/harbor
chmod -R 777 /cert/harbor
cd /cert/harbor# whereis openssl 检查是否有安装openssl,如果没有先安装openssl组件,如果有就不用安装了
whereis openssl
yum install openssl# 创建服务器证书密钥文件harbor.key
openssl genrsa -des3 -out harbor.key 2048
# 输入密码,确认密码,自己随便定义,但是要记住,后面会用到。# 创建服务器证书的申请文件harbor.csr
openssl req -new -key harbor.key -out harbor.csr
# 输入密钥文件的密码, 然后一路回车# 备份一份服务器密钥文件
cp harbor.key harbor.key.org# 去除文件口令
openssl rsa -in harbor.key.org -out harbor.key
# 输入密钥文件的密码# 创建一个自当前日期起为期十年的证书 harbor.crt
openssl x509 -req -days 3650 -in harbor.csr -signkey harbor.key -out harbor.crt

五、解压软件包,修改配置文件

先进入harbor离线包上传的目录,解压离线包到/usr/local/harbor下  

tar zxf /etc/yum.repos.d/harbor-offline-installer-v2.11.0.tgz  -C /usr/local/
ls /usr/local/harbor

解压软件包之后有这些文件及目录:

 配置harbor.yml 文件

vi /usr/local/harbor/harbor.yml

主要修改以下地方:

# 将hostname改成本机IP或域名,不要用localhost,127.0.0.1或0.0.0.0,冒号后面都有一个空格
hostname: 192.168.0.101ui_url_protoc0l: https
# 将http端口改成10080,因为默认用的80端口已经被占用,http可以指定任意端口
http:port: 10080
# 配置https的端口,只能使用443端口,更改证书路径,证书路径为刚刚生成的https证书的实际路径
https:port: 443certificate: /cert/harbor/harbor.crtprivate_key: /cert/harbor/harbor.key
# 修改后台管理密码
harbor_admin_password: harbor12345
# harbor的内部数据库密码
database:password: root123
# 修改harbor数据存储路径与日志存储路径,目录要先创建好并赋予777权限
data_volume: /data/harbor-data
# 修改日志存放路径,默认路径为/var/log/harbor
log:local:localtion: /data/harbor-log

六、安装harbor

执行harbor安装脚本

cd /usr/local/harbor
./install.sh

安装成功后输出下面的信息:

 

在浏览器地址输入:https://192.168.0.101:10443,打开harbor登录页面

用户名:admin,密码:harbor12345

登录成功后进入后台主页:

 七、docker信任配置

 要让docker可以访问harbor,需要将harbor域名或IP设置为docker的受信任仓库,修改配置文件 /etc/docker/daemon.json ,增加docker受信任IP或域名。

vi  /etc/docker/daemon.json

追加内容:

{"insecure-registries": ["192.168.0.101:10080"]
}

 拷贝https证书文件harbor.crt到 /etc/docker/certs.d/serverIp 文件夹。每个docker都要拷贝证书文件。

mkdir –p /etc/docker/certs.d/192.168.0.101
cp /cert/harbor/harbor.crt  /etc/docker/certs.d/192.168.0.101/ca.crt
#注意,拷贝过去的证书文件名为 ca.crt 

重启docker

#重启docker
systemctl daemon-reload
systemctl restart docker.service

重启harbor

cd /usr/local/harbor
./prepare
docker-compose down
docker-compose up -d

八、将本地业务镜像push到harbor

首先在harbor中新建一个项目,项目名称为【eshop】

 用docker登录harbor

docker login 192.168.0.101:10080 -u 用户名 -p 密码

登录成功输出以下信息: 

给本地镜像打上tag标记,打标记的时候要加上项目名称

# docker tag 本地镜像名:版本号 ip:port/项目名称/远程镜像名:版本号,如果不加版本号表示最新版本
docker tag demo1.mvcone:v1.0.1 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1
# 上传镜像到harbor
docker push 192.168.0.101:10080/eshop/demo1.mvconev:v1.0.1

push成功输入以下信息:

 在harbor后台管理中查看eshop项目下的镜像

 点击镜像名称,查看镜像版本号

 上传镜像遇到的坑

如果不在harbor中新建项目,或者创建tag的时候不加项目名称,在上传镜像时会发生错误:received unexpected HTTP status: 500 Internal Server Error ,所以docker tag 打标签的时候要一定要加上项目名称。

#push不加项目名称的镜像出现错误,下面是错误方法:
# docker tag 本地镜像名:v1.0.1 ip:port/远程镜像名:v1.0.1
docker tag demo1.mvcone:v1.0.1 192.168.0.101:10080/demo1.mvcone:v1.0.1
docker push 192.168.0.101:10080/demo1.mvcone:v1.0.1
#应该这样写docker tag demo1.mvcone:v1.0.1 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1
# 上传镜像到harbor
docker push 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1

这样在push镜像时出现500 Internal Server Error错误: 

九、为刚才上传到harbor的镜像创建一个容器 

 

eshop/demo1.mvcone镜像已经上传到harbor,现在要用eshop/demo1.mvcone镜像创建一个容器,测试一下容器是否跑得起来。

 

步骤:

 

(1) 删除本地镜像 192.168.0.101:10080/eshop/demo1.mvcone 

 

docker rmi 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1

(2)从harbor上 拉取eshop/demo1.mvcone 镜像到本地

docker pull 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1#从harbor上拉取像镜要写全路径, IP地址:端口/项目名称/镜像名:版本号

(3) 创建 192.168.0.101:10080/eshop/demo1.mvcone 镜像的容器,以8001端口运行

docker run -d --name my.eshop.demo1.mvcone -p 8001:50001 -v /appdata/mvcone 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1

--name 容器名 

-d 后台运行容器

-p 参数:8001是docker对外暴露的端口,可以任意指定,50001是Dockerfile文件配置的docker内部运行端口,不可以随意指定。

-v 参数,数据卷,容器的数据存放路径。

192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1 是镜像名

(4) 查看docker中是否运行着刚刚创建的容器

docker ps 

 从截图上可以看出 my.ehop.demo1.mvcone 容器已经创建并于处运行状态。

(5) 用浏览器验证容器运行项目的效果

十、harbor停止/重启/御载

 重启harbor:

cd /usr/local/harbor
docker-compose down
./prepare   #配置文件有改动时需要执行
docker-compose up -d

 关闭harbor

cd /usr/local/harbor
docker-compose down -v
# 或者
docker-compose stop

 

卸载Harbor

cd /usr/local/harbor
docker-compose stop
rm -rf /usr/local/harbor

     

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试官:说说MySQL调优?

MySQL 作为关系型数据库的典型代表,其流行程度超越于任何数据库,因此在 Java 面试中,MySQL 是一定会被问到的重要知识点。而在 MySQL 中有一道极其常见的面试题,我们这里系统的来看一下,这就是我们今天要讨论的 MySQL 调优问题。 MySQL 调优的大体思路如下:具体调优思路如…

Thread、ThreadPool、Task之间的联系

1、ThreadPool线程池 一个应用程序最多只能有一个线程池。线程池是一种多线程处理形式,通过QueueUserWorkItem()将任务添加到队列中,然后创建线程(后台线程,又称工作者线程)自动启动这些任务来处理。其中,最小线程数即核心线程数(corePoolSize)是线程池中长期保持的线程…

基准测试基础

基准测试 定义 基准测试是一种用于衡量计算机系统,软件应用或硬件组件性能的测试方法。 基准测试旨在通过运行一系列标准化的任务场景来测量系统的性能表现,从而帮助评估系统的各种指标,如响应时间、并发用户数、TPS、资源利用率、交易成功率等。 特质 ① 可重复性: 可进行重…

智林 - AI 答题应用平台介绍

智林 - AI 答题应用平台 一、项目介绍 智林AI答题是一款基于 Vue 3 + Spring Boot + Redis + ChatGLM + RxJava + SSE 的 AI 答题应用平台。 用户可以基于 AI 快速制作并发布答题应用,支持检索、分享、在线答题并基于 AI 得到回答总结;管理员可以集中管理和审核应用。 什么是…

博客园自定义皮肤工具推荐:awescnb

简介 awescnb是一个用于博客园(Cnblogs)的自定义皮肤和功能增强插件。它允许用户通过简单的配置来自定义其博客的外观和增加一些额外的功能。下面是对awescnb的简要介绍: 功能特点: 自定义皮肤:用户可以选择不同的皮肤主题,包括背景颜色、字体样式等,以个性化他们的博客…

外部存储器

磁盘存储器磁盘存储器的性能指标磁盘地址磁盘阵列固态硬盘SSD

Ubuntu22.04上安装esp-idf

一、安装准备建议使用Ubuntu 20.04 或 Ubuntu 22.04 操作系统为了在 ESP32-C3 中使用 ESP-IDF,需要安装一些依赖包 sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0…

数据结构 分块 莫队

数据结构 分块 & 莫队分块 一种优化暴力的思想。 通常是将原数据划分成适当块(一般为 \(\sqrt{n}\)),对每块数据进行预处理,进而达到比暴力更优的时间复杂度。 划分 确定块长后,一般需要开两个数组存储每一块的右边界与原数据所属块序号,更加方便后续操作。 int sq=s…

改写socket编程并解释socket通信原理

如果你仔细看我之前的博客,会看到那个手机打电话的示例,但是那段代码彻底写死了,真正编程的时候一定要写活了,不信你看看很多的程序的配置文件就是这样的,为什么单独分离个配置文件出来,就是为了便于修改配置,这就是把程序写活的最好的例子。 言归正传,直接上代码。 服…

工程项目综合管理系统解析:哪一款适合你的企业?

国内外主流的10款工程项目综合管理系统对比:PingCode、Worktile、广联达、明源云、中望软件、Oracle Primavera、Asana、Wrike、Zoho Projects、Basecamp。在处理复杂的工程项目时,选择合适的综合管理系统可能是一个令人头痛的问题。项目延误、成本超支和资源管理不当等问题常…

预训练语言模型去偏方法——与特定任务相关

一、对抗学习 1.1 ADV-标准对抗  主要思想:防止鉴别器识别受保护的属性。以对抗性方法训练模型,并明确掩盖受保护信息。 损失函数:1.2 EADV-优化对抗ADV存在的问题:在某些情况下,即使对抗性组件似乎做得很完美,仍有相当数量的受保护信息,并且可以从编码的表示中提取。…