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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Talkingdata 数据统计

TalkingData 是一家提供移动大数据服务的平台&#xff0c;专注于为客户提供全面的产品统计分析服务和权威的移动行业数据解析。通过集成 TalkingData 的 SDK&#xff0c;开发者可以收集、处理和分析其应用的一方数据&#xff0c;从而深入了解用户的使用行为、应用表现及市场动态…

Java面试八股之什么是死锁

什么是死锁 死锁&#xff08;Deadlock&#xff09;是多线程编程中的一种常见问题&#xff0c;特别是在涉及到资源共享和同步的时候。具体来说&#xff0c;死锁是指两个或两个以上的线程在执行过程中&#xff0c;由于互相持有并等待对方释放的资源&#xff0c;而导致所有线程都…

IP地址显示“不安全”怎么办|已解决

解决IP地址显示“不安全”的问题&#xff0c;通常需要确保网站或服务使用HTTPS协议进行加密通信&#xff0c;可以通过部署SSL证书来解决&#xff0c;以下是具体的解决步骤&#xff1a; 1 申请IP地址SSL证书&#xff1a;网站管理员应向证书颁发机构&#xff08;CA&#xff09;申…

http项目改为/支持https的方案、无需修改后台代码

背景描述&#xff1a;原来的项目前后台都是http&#xff0c;现在某个服务要求前台必须使用https&#xff1b; 方案1&#xff1a;前台部署在https里&#xff0c;后面代码修改&#xff1b;但是微服务架构&#xff0c;后台工作量太大&#xff1b; 方案2&#xff1a;前台部署在ht…

【linux特殊符号】

文章目录 学习目标一、Linux的特殊符号1.系统变量2.引号 总结 学习目标 1.学会查看系统变量 2.学会各种引号 3.一、Linux的特殊符号 1.系统变量 windows系统变量&#xff1a;echo %path% linux系统变量&#xff1a;echo $PATH2.引号 " " 双引号&#xff0c;换行…

AJAX(JQuery版本)

目录 前言 一.load方法 1.1load()简介 1.2load()方法示例 1.3load()方法回调函数的参数 二.$.get()方法 2.1$.get()方法介绍 2.2详细说明 2.3一些例子 2.3.1请求test.php网页并传送两个参数 2.3.2显示test返回值 三.$.post()方法 3.1$.post()方法介绍 3.2详细说明 …

JVM学习-垃圾回收(三)

System.gc 通过System.gc()或Runtime.getRuntime().gc()的调用&#xff0c;会显示触发Full GC&#xff0c;同时对老年代和方法区进行回收&#xff0c;尝试释放被丢弃对象占用的内存然后System.gc()调用附带一个免责声明&#xff0c;无法保证对垃圾收集器的调用JVM实现者可以通…

瑞芯微RV1126——交叉编译与移植

一、搭建这个nfs服务挂载 (1) sudo apt install nfs-kernel-server (2) 然后在你的ubuntu创建一个nfs共享目录&#xff1a; (3) sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务 (4) 修改配置文件: sudo vim /etc/exports 在这个配置文件里面添加&#xff1a;/hom…

Vue状态管理深度剖析:Vuex vs Pinia —— 从原理到实践的全面对比

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 &#x1f44b; 引言&#x1f4cc; Vuex 基础知识核心构成要素示例代码 &#x1f4cc; Pinia 基础知识核心构成要素示例代码 &#x1f4cc; Vuex与Pinia的区别&#x1f4cc; 使用示例与对比&#x1f4cc; 总结 &#x1f44b;…

【Linux学习】进程间通信 (1) —— 管道

下面是有关进程通信中管道的相关介绍&#xff0c;希望对你有所帮助&#xff01; 小海编程心语录-CSDN博客 1. 进程通信的基本概念 1.1 概念 进程间通信简称 IPC &#xff0c;指两个进程之间的通信。 IPC的方式通常有管道&#xff08;包括无名管道和命名管道&#xff09;、消息…

复现Apache HTTPD 多后缀解析漏洞

准备一个纯净的Ubuntu系统 1.先更新一下安装列表 sudo apt-get update 2.安装dockers.io sudo apt install docker.io 查看是否安装成功 docker -v 3. 查看是否安装pip,没有的话就安装 sudo apt-get install python3-pip 4. 安装docker-compose pip install docker-comp…

性能测试工具

性能测试工具 1.Jmeter 环境搭建1.安装JDK2.安装Jmeter1.下载2.安装3.环境配置 3.Jmeter 文件目录介绍1.bin目录2.docs 目录3.printable_docs目录4.lib目录 4.修改默认配置1.汉化配置2.修改主题 5.元件的基本介绍6.元件的作用域作用域的原则 7.元件的执行顺序 1.Jmeter 环境搭建…

Axure RP 9 for Mac/win:重新定义交互原型设计的未来

在当今数字化时代&#xff0c;交互原型设计已成为产品开发中不可或缺的一环。Axure RP 9作为一款功能强大的交互原型设计软件&#xff0c;凭借其出色的性能和用户友好的界面&#xff0c;赢得了广大设计师的青睐。 Axure RP 9不仅支持Mac和Windows两大主流操作系统&#xff0c;…

C#数据类型变量、常量

一个变量只不过是一个供程序操作的存储区的名字。 在 C# 中&#xff0c;变量是用于存储和表示数据的标识符&#xff0c;在声明变量时&#xff0c;您需要指定变量的类型&#xff0c;并且可以选择性地为其分配一个初始值。 在 C# 中&#xff0c;每个变量都有一个特定的类型&…

三能一体运营体系助力政企支撑水平提升

生产力的发展是现代社会孜孜不倦的追求&#xff0c;由此产生了我们熟悉的“机械化、电子化、信息化”乃至现今正在发生的“智能化”四次工业革命。这些是由技术的突破性发展带来的&#xff0c;但我们也注意到生产力发展的另一个助力&#xff0c;即生产效率的提升&#xff0c;19…

指数分布的理解,推导与应用

指数分布的定义 在浙大版的教材中&#xff0c;指数分布的定义如下&#xff1a; 若连续型的随机变量 X X X的概率密度为&#xff1a; f ( x ) { 1 θ e − x θ , x>0 0 , 其他 f(x) \begin{cases} \frac{1}{\theta} e^{-\frac{x}{\theta}}, & \text{x>0}\\ 0, &a…

编程基础:掌握运算符与优先级

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、运算符的基石&#xff1a;加减乘除 二、比较运算符&#xff1a;判断数值大小 三、整除…

Tensorflow入门实战 P01-实现手写数字识别mnist

目录 1、背景&#xff1a;MNIST手写数字识别 2、完整代码&#xff08;Tensorflow&#xff09;&#xff1a; 3、运行过程及结果&#xff1a; 4、小结&#xff08;还是很清晰的&#xff09; 5、 展望 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客…

智慧水务可视化大屏,一屏纵览水务信息。

智慧水务可视化大屏通常需要展现以下几类信息&#xff1a; 01.实时监测数据&#xff1a; 包括水源水质、水压、水位、水流速等实时监测数据&#xff0c;通过图表、曲线等形式展示&#xff0c;帮助监测人员了解当前水务系统的运行状态。 02.设备运行状态&#xff1a; 展示水泵…

监控上网的软件有哪些?含泪推荐的电脑监控软件

监控上网的软件有很多&#xff0c;企业选择的时候应该遵循什么样的原则呢&#xff1f;鄙人愚见&#xff0c;认为以下四项原则是选择监控软件时首要考虑的。 1、功能需求&#xff1a; 监控软件不应该只是起到控制上网的作用&#xff0c;因为一些泄密行为可能是通过USB接口、打印…