ubuntu22部署Docker私有仓库Harbor (http https方式)

harbor日志:/var/log/harbor

前置安装配置

需先安装docker和docker-compose

0.配置清华大学apt源并安装docker

#信任 Docker 的 GPG 公钥:

sudo apt-get install ca-certificates curl gnupg

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

#添加软件仓库 清华apt源:

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#最后安装

sudo apt-get update

sudo apt-get install docker-ce

若install时报错: Hash Sum mismatch  

参照docker官方教程,重新设置apt源即可。https://docs.docker.com/engine/install/ubuntu

systemctl start docker

systemctl enable docker

配置阿里云镜像加速(不再赘述,按阿里云上的步骤操作即可)

配置docker数据存储目录 vim /etc/docker/daemon.json

 "data-root": "/data/docker"

0.安装docker-compose

curl -SL https://github.com/docker/compose/releases/download/v2.7.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

  1. 下载

cd /use/local

​
wget https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz

tar xzvf harbor-offline-installer-v2.8.2.tgz 

方式一:http方式部署

2.调整yml配置文件

mv harbor.yml.bak harbor.yml

修改hostname为10.1.1.115

http.port 9999

harbor_admin_password: 123456

因为是内网,无需https,注释掉https配置即可

3.执行安装

sudo ./install.sh 

访问web界面:http://10.1.1.115:9999/  

admin

123456

 方式二:https方式部署(推荐)

#注意,全部使用hosts方式用ip来映射域名

1、修改host(10.1.1.115为harbor本机的ip   xinchen.harbor为想要配置的域名)

echo "10.1.1.115  xinchen.harbor" >> /etc/hosts

2、切换到harbor的路径,方便后续操作。

cd /usr/local/harbor

3、生成CA私钥

openssl genrsa -out ca.key 4096

4、继续生成生成CA证书(域名改成自己上面改的)

openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=xinchen.harbor" \-key ca.key \-out ca.crt

生成服务器证书:通常包含一个.crt文件和一个.key文件,例如xinchen.harbor.crt和xinchen.harbor.key。

5、生成一个服务器私钥(域名改成自己上面改的)

openssl genrsa -out xinchen.harbor.key 4096

6、继续生成证书签名请求(CSR)(域名改成自己上面改的)

 openssl req -sha512 -new \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=xinchen.harbor" \-key xinchen.harbor.key \-out xinchen.harbor.csr

7、生成X509 v3的扩展文件(域名改成自己上面改的)

无论您使用FQDN完全限定域名还是IP地址连接到Harbor主机,都必须创建此文件,以便可以为您的Harbor主机生成符合主题备用名称(SAN)和x509 v3的证书扩展要求。替换DNS条目以反映您的域。

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names[alt_names]  
DNS.1=xinchen.harbor
DNS.2=xinchen.harbor
DNS.3=hostname
EOF

# [alt_names]可以填写您自定义的域名

ps: 如果使用ip,需要使用如下方式进行创建:

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:192.168.93.9
EOF

8、使用该v3.ext文件为您的Harbor主机生成证书(域名改成自己上面改的)

openssl x509 -req -sha512 -days 3650 \-extfile v3.ext \-CA ca.crt -CAkey ca.key -CAcreateserial \-in xinchen.harbor.csr \-out xinchen.harbor.crt

8、创建 /data/cert目录为了给harbor.yml使用

mkdir -p /data/cert

9、执行复制命令,将证书复制到/data/cert下(域名改成自己上面改的)

cp xinchen.harbor.crt /data/cert/

cp xinchen.harbor.key /data/cert/

10、转换xinchen.harbor.crt为xinchen.harbor.cert,供Docker使用(域名改成自己上面改的)

Docker守护程序将.crt文件解释为CA证书,并将.cert文件解释为客户端证书。

openssl x509 -inform PEM -in xinchen.harbor.crt -out xinchen.harbor.cert

11、在docker所在机器创建对应目录(域名改成自己上面改的)

mkdir -p /etc/docker/certs.d/xinchen.harbor/

12、复制证书到目录下 目录名为域名:端口(默认443端口 可以不加端口  docker login xinchen.harbor对应目录/etc/docker/certs.d/xinchen.harbor      |     docker login xinchen.harbor:1443 对应目录/etc/docker/certs.d/xinchen.harbor:1443  )

cp xinchen.harbor.cert /etc/docker/certs.d/xinchen.harbor/

cp xinchen.harbor.key /etc/docker/certs.d/xinchen.harbor/

cp ca.crt /etc/docker/certs.d/xinchen.harbor/

13、配置harbor.yml(按照如下修改,改成你自己的证书)

hostname: xinchen.harbor

harbor_admin_password: 123456

https:

  # https port for harbor, default is 443

  port: 443

  # The path of cert and key files for nginx

  certificate: /data/cert/xinchen.harbor.crt

  private_key: /data/cert/xinchen.harbor.key

14、重启docker

systemctl restart docker

15、进入harbor目录下,重新预部署

./prepare

16、关闭harbor

docker-compose down -v

17、重启harbor

docker-compose up -d  //默认基于docker-compose.yml文件 -f可指定文件

##注意:harbor端口最好不要改会出各种问题

https://10.1.1.115 访问web管理后台,通过http会自动转到https

docker登陆harbor

1.修改hosts 映射

echo "10.1.1.115  xinchen.harbor" >> /etc/hosts

2.从harbor服务器scp拷贝证书过来

scp -r certs.d/ 10.3.1.49:/etc/docker

或者直接 修改/etc/docker/daemon.json 配置Docker信任并连接到你指定的不安全Registry 也行

"insecure-registries": ["xinchen.harbor[:端口]"]

3.docker login登录即可:

docker login xinchen.harbor  

注意事项:

docker login默认是采用https方式的,docker login 默认走https://xxxx:443

注释掉https后docker login才使用http的方式进行校验

hostname: xinchen.harbor 必须设成域名,因为默认生成的证书只支持域名,不支持ip,如果需要支持ip,需要修改v3.ext文件,否则报错: validate certificate for 10.1.1.115 because it doesn't contain any IP SANs。

若报错:Error response from daemon: Get "https://xinchen.harbor/v2/": x509: certificate signed by unknown authority

需要拷贝证书到本机/etc/docker目录下,如上所示。

创建项目并推送镜像到harbor中

创建一个项目: ecmaster 非公开( 当项目设为公开后,任何人都有此项目下镜像的读权限。命令行用户不需要“docker login”就可以拉取此项目下的镜像)

在项目-成员中添加上创建的用户

推送镜像

上传镜像至harbor私有仓库:

docker tag b5bd271f2aa7 10.1.1.115:9999/ecmaster/node_v16:ecmaster

docker push 10.1.1.115:9999/ecmaster/node_v16:ecmaster

直接docker login 10.1.1.115会报错:Error response from daemon: Get "https://10.1.1.115:9999/v2/": http: server gave HTTP response to HTTPS client

解决一: 本地配置docker以允许http方式进行push镜像(有俩种方式)

1、修改/etc/docker/daemon.json 配置Docker信任并连接到你指定的不安全Registry

"insecure-registries": ["harbor服务器的ip或域名[:端口]"]

2、修改/usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --insecure-registry harbor服务器的ip:端口或域名

ps:使用域名的话 还需编辑hosts文件:vi /etc/hosts 添加ip 域名映射关系

systemctl daemon-reload

systemctl restart docker

解决方案二:配置harbor以https方式进行部署

修改harbor.yml增加https配置

 ## https related config

https:

  ## https port for harbor, default is 443

  port: 443

  ## The path of cert and key files for nginx

  certificate: /data/cert/xinchen.harbor.crt

  private_key: /data/cert/xinchen.harbor.key

#.pem和.key 是根据域名购买ssl证书,也可以通过openssl自己生成。

执行/usr/local/harbor/install.sh,使harbor.yml的修改生效,并完成服务的启动,

bash /usr/local/harbor/install.sh

systemctl daemon-reload

systemctl restart docker

清除harbor重新install

删除Harbor的容器,但保留文件系统中的所有图像数据和Harbor的数据库文件:

sudo docker-compose down -v  //默认基于docker-compose.yml文件 -f可指定文件

在执行干净的重新安装之前删除 Harbor 数据库和图像数据:

rm -r /data/database

rm -r /data/registry

相关报错及解决:

harbor  admin用户登录密码一直错误:

docker exec -it (harbor-core容器) bash ,进入到容器内,然后,

printenv | grep PASSWORD查看一下设置进去的环境变量:

可以看到初始化的密码,若初始化密码正确还是进不去,清除harbor重新install(harbor.yml中注释掉https配置项试试)

1.推送镜像时报:harbor unknown: http status code: 404, body: {"errors":[{"code":"MANIFEST_UNKNOWN","message":"manifest unknown"]}

2.拉取镜像报错:mainifest not found

解决:1.执行harbor gc进行垃圾回收,亲测可解决http status code: 404,"manifest unknown"问题

不行再尝试:2.清除harbor后重新install

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

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

相关文章

网络安全快速入门(十五) linux用户管理

14.1 前言 前面我们已经大概了解了Linux的网络链接&#xff0c;今天我们来看看Linux用户管理的一些基础操作&#xff0c;话不多说&#xff0c;我们来开始吧&#xff01;&#xff01; 14.2 用户的基础知识 我们先了解一些有关linux用户的一些基础知识&#xff0c;我们从Linux用…

HQL面试题练习 —— 互相关注

目录 1 题目2 建表语句3 题解 1 题目 现有用户关注者列表记录表 t_user_follower&#xff0c;有两个字段&#xff0c;用户ID&#xff08;user_id&#xff09;&#xff0c;关注者列表&#xff08;follower_ids)&#xff0c;关注者列表中是关注用户的用户ID&#xff0c;数据样例如…

sharded jedis pipelined 执行后 数据并未存入redis

前言 因为历史原因&#xff0c;在某个同步菜单操作的方法中先清除缓存&#xff0c;然后在初始化缓存。本来很正常的逻辑&#xff0c;但是这个清除是db查询获取所有的菜单 然后循环一条条删除 然后在db查询有效的菜单操作 在循环一条条插进去 经统计这个菜单操作大概有个7千个 …

深度学习之基于MTCNN+Facenet的人脸识别身份认证系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着信息技术的快速发展&#xff0c;身份认证技术在日常生活和工作中的重要性日益凸显。传统的…

民国漫画杂志《时代漫画》第19期.PDF

时代漫画19.PDF: https://url03.ctfile.com/f/1779803-1248634637-c04860?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

使用vue和element_ui搭建后端页面

使用vue和element_ui搭建后台管理页面 效果顶部和左侧内容固定&#xff0c;中间内容滚动 <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&g…

汽车生产线中的工业机器人应用HT3S-PNS-ECS(EtherCAT/Profinet)协议转换通讯方案案例分析

汽车生产线中的工业机器人应用HT3S-PNS-ECS(EtherCAT/Profinet)协议转换通讯方案案例分析 ——北京中科易联科技有限公司供稿—— 一、摘要 随着工业自动化的快速发展&#xff0c;汽车生产线对工业机器人的依赖日益增加。HT3S-PNS-ECS作为工业机器人中的关键组件&#xff0c;其…

GPIO模拟spi时序点亮数码管

目录 spi.h spi.c main.c 实验效果 spi.h #ifndef __SPI_H__ #define __SPI_H__#include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h"//spi初始化 void spi_init(); //spi写入数据 void spi_write(unsigned char data);#endif spi.c #include…

git分支常用命令

最近在用git提交代码的时候&#xff0c;发现有些命令不是很会&#xff0c;先记录几个常用分支命令&#xff0c;后续再补充&#xff0c;在执行git push命令提交代码的时候遇到报错&#xff0c;一并记录下。 1.git常用命令 新建分支&#xff1a; git branch <分支名称> 比…

Python——基于共享单车使用量数据的可视化分析(1)

目录 &#x1f9fe; 1、数据集&#xff08;部分数据&#xff09; ✏️ 2、导入数据集与必要模块 1️⃣ 2.1 导入库以及字体包 2️⃣ 2.2 读取数据集 3️⃣ 2.3 查看数据集基本信息 ⌨️ 3、数据预处理 1️⃣ 3.1删除无关字段 2️⃣ 3.2对各字段进行中文标识 3️⃣ 3.3…

EI会议的社交活动有哪些?

EI会议&#xff08;Engineering Index会议&#xff09;不仅是一个展示最新研究成果的平台&#xff0c;也为与会者提供了丰富的社交活动机会。以下是一些常见的社交活动形式及其内容&#xff1a; 常见社交活动 1. 欢迎酒会&#xff08;Welcome Reception&#xff09; 时间和地…

图像超分辨率重建相关概念、评价指标、数据集、模型

1、图像超分辨率概念 1.1 基本定义 超分辨率&#xff08;Super-Resolution&#xff09;&#xff0c;简称超分&#xff08;SR&#xff09;。是指利用光学及其相关光学知识&#xff0c;根据已知图像信息恢复图像细节和其他数据信息的过程&#xff0c;简单来说就是增大图像的分辨…

光照模型技术在AI去衣中的重要作用

引言&#xff1a; 在数字图像处理和计算机视觉领域&#xff0c;AI去衣技术正逐渐成为研究和应用的热点。这项技术依赖于人工智能算法&#xff0c;尤其是深度学习模型&#xff0c;来识别和处理图像或视频中的衣物。在这个过程中&#xff0c;光照模型技术扮演着至关重要的角色。本…

派可数据助力制造企业数字化生产管理新能力提升

生产管理是现代企业运营的核心之一&#xff0c;它决定了产品的质量、生产效率和企业的竞争力。在一个日益竞争激烈、市场需求多变的商业环境中&#xff0c;如何高效地组织和管理生产过程成为了企业不容忽视的重要课题。 过去&#xff0c;生产管理可能主要侧重于物理工厂的运作…

2024-5-6-从0到1手写配置中心Config之实现配置中心客户端

配置加载原理 在Spring中PropertySource类实现了所有属性的实例化。 启动赋值&#xff1a; 定义自定义属性配置源&#xff0c;从config-server获取全局属性&#xff1b;Spring启动时&#xff0c;插入自定义属性配置源&#xff1b;绑定属性会优先使用&#xff0c;给自定义属性…

宁盾与深信服发布联合方案,解决云桌面及微软AD完整替代

自 Citrix 退出中国市场后&#xff0c;不少中大型企业关心国产云桌面脱离微软 AD 域是否还能正常工作。在2024年3月初&#xff0c;宁盾身份目录与深信服桌面云完成兼容互认证&#xff0c;对于企业的疑问给出了官方回应。 5月10日&#xff0c;在深信服《Citrix离场背景下&#…

【设计模式】JAVA Design Patterns——Balking(止步模式)

&#x1f50d;目的 止步模式用于防止对象在不完整或不合适的状态下执行某些代码。 &#x1f50d;解释 真实世界例子 洗衣机中有一个开始按钮&#xff0c;用于启动衣物洗涤。当洗衣机处于非活动状态时&#xff0c;按钮将按预期工作&#xff0c;但是如果已经在洗涤&#xff0c;则…

科技产业园3D探秘:未来科技之城的奇幻之旅

在数字时代的浪潮中&#xff0c;科技产业园区成为了推动城市经济发展、科技创新的重要引擎。 当我们打开科技产业园的3D可视化模型&#xff0c;仿佛穿越时空&#xff0c;来到了一个充满奇幻色彩的科技世界。在这里&#xff0c;高楼大厦鳞次栉比&#xff0c;绿色植被点缀其间&am…

【文末附gpt升级方案】革新多模态学习:哈工大团队推出“Uni-MoE”统一多模态大模型的跨域MoE研究

革新多模态学习&#xff1a;哈工大团队推出“Uni-MoE”统一多模态大模型的跨域MoE研究 摘要&#xff1a;随着人工智能技术的飞速发展&#xff0c;多模态学习已成为机器学习领域的重要研究方向。然而&#xff0c;传统的多模态学习方法往往存在信息融合困难、模型复杂度高等问题…

深度学习模型keras第二十三讲:在KerasCV中使用SAM进行任何图像分割

1 SAM概念 ###1.1 SAM定义 Segment Anything Model&#xff08;SAM&#xff09;是一种基于深度学习的图像分割模型&#xff0c;其主要特点包括&#xff1a; 高质量的图像分割&#xff1a;SAM可以从输入提示&#xff08;如点、框、文字等&#xff09;生成高质量的对象掩模&am…