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

通过Harbor构建docker私服仓库

        Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,它扩展了开源的Docker Distribution,通过添加一些企业必需的功能特性,如安全、标识和管理等。Harbor由VMware公司开发并开源,旨在帮助用户迅速搭建一个企业级的Docker Registry服务。

        作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全,提升了用户使用Registry构建和运行环境传输镜像的效率。它支持安装在多个Registry节点的镜像资源复制,确保数据和知识产权在公司内部网络中管控。此外,Harbor还提供了高级的安全特性,如用户管理、访问控制和活动审计等。

官网地址:GitHub - goharbor/harbor: An open source trusted cloud native registry project that stores, signs, and scans content.

配置要求:

安装 harbor 的机器,机器需要的内存至少要 2G

一、为 Harbor 自签发证书

需先安装openssl这里不进行赘述

【1】生成ca证书

openssl genrsa -out ca.key 4096 openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/CN=harbor23.com" -key ca.key -out ca.crt

【2】生成服务器证书

创建私钥

openssl genrsa -out server.key 4096

生成签名

openssl req -new -sha512 -subj "/CN=harbor23.com" -key server.key -out server.csr

生成一个包含特定扩展字段的X.509证书配置文件

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

生成证书

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

复制服务器证书到机器目录下

cp server.crt /etc/docker/certs.d/harbor23.com/server.crt

二、安装 harbor

mkdir /data/install -p cd /data/install/

【1】 下载harbor

cd /data/install/ 

把 harbor 的离线包 harbor-offline-installer-v2.3.0-rc3.tgz 上传到这个目录,

离线包在课件 里提供了 下载 harbor 离线包的地址: https://github.com/goharbor/harbor/releases/tag/

【2】解压

tar -zxvf harbor-offline-installer-v2.3.0-rc3.tgz cd harbor cp harbor.yml.tmpl harbor.yml vim harbor.yml

【3】修改配置文件:

hostname: harbor 

修改 hostname,可以自己定义不能用localhost, harbor23.com

协议用 https 

certificate: /data/ssl/server.crt  指向之前生成的证书

private_key: /data/ssl/harbor.key  指向之前生成的私钥

邮件和 ldap 不需要配置,在 harbor 的 web 界面可以配置 其他配置采用默认即可 修改之后保存退出 

注:harbor 默认的账号密码:admin/Harbor12345

【4】安装

安装 harbor 需要的离线镜像包 docker-harbor-2-3-0.tar.gz 在课件,可上传到 harbor 机器, 执行

docker load -i 解压

docker load -i docker-harbor-2-3-0.tar.gz 加载镜像

cd /data/install/harbor 

./install.sh 成功安装后会生成docker-compose文件

扩展: 

如何停掉 harbor:

cd /data/install/harbor

docker-compose stop 

如何启动 harbor: 

cd /data/install/harbor 

docker-compose start

如果 docker-compose start 启动 harbor 之后,还是访问不了,那就需要重启虚拟机

Harbor 图像化界面使用说明

在浏览器输入: https://harbor23.com

账号:admin 

密码:Harbor12345 

输入账号密码出现如下: 

所有基础镜像都会放在 library 里面,这是一个公开的镜像仓库 

新建项目->起个项目名字 test(把访问级别公开那个选中,让项目才可以被公开使用)

三、测试使用 harbor 私有镜像仓库

【1】修改 docker 配置

vim /etc/docker/daemon.json

{ "registry-mirrors": ["https://rsbud4vc.mirror.aliyuncs.com","https://registry.dockercn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hubmirror.c.163.com"], "insecure-registries": ["192.168.40.181","localhost"] 
}

【2】修改配置之后使配置生效

systemctl daemon-reload && systemctl restart docker

查看 docker 是否启动成功

systemctl status docker

显示如下,说明启动成功: 

Active: active (running) since Fri … ago

注意: 配置新增加了一行内容如下: "insecure-registries":["192.168.40.181"], 上面增加的内容表示我们内网访问 harbor 的时候走的是 http,192.168.40.181 是安装 harbor 机器 的 ip

【3】登录 harbor

docker login harbor23.com 

Username:admin 

Password: Harbor12345

【4】上传镜像

导入 tomcat 镜像,tomcat.tar.gz 在课件里

docker load -i tomcat.tar.gz

把 tomcat 镜像打标签

docker tag tomcat:latest 192.168.40.181/test/tomcat:v1 

执行上面命令就会把 192.168.40.181/test/tomcat:v1 上传到 harbor 里的 test 项目下

docker push 192.168.40.181/test/tomcat:v1 

执行上面命令就会把 192.168.40.181/test/tomcat:v1 上传到 harbor 里的 test 项目下

至此harbor私服能够正常使用

【5】机器上删除镜像

docker rmi -f 192.168.40.181/test/tomcat:v1

【6】拉取镜像

docker pull 192.168.40.181/test/tomcat:v1

四、问题汇总

1、docker login harbor23.com 

登录时报 x509: certificate signed by unknown authority;在需要登录的主机上配置

修改 sudo vi /etc/docker/daemon.json

{ "insecure-registries": [ "harbor23.com", "10.32.23.77" ], "registry-mirrors": [ "https://2wk9cvvl.mirror.aliyuncs.com" ] }

然后重启docker服务 service docker restart

2、docker网络问题,centos容器无法访问harbor23.com

vi /etc/hosts

将harbor23.com 指向host.docker.internal 地址

容器之间相互访问可以通过host.docker.internal 进行访问


http://www.kler.cn/a/233380.html

相关文章:

  • 服务器显卡和桌面pc显卡有什么不同
  • uniapp使用scroll-view下拉刷新与上滑加载
  • 前端神经网络入门(三):深度学习与机器学习的关系、区别及核心理论支撑 - 以Brain.js示例
  • 前端常用布局模板39套,纯CSS实现布局
  • 随手记:简单实现纯前端文件导出(XLSX)
  • 算法——移除链表元素(leetcode203)
  • 前端使用pdf.js进行pdf文件预览的第二种方式:Viewer.html
  • Quartus工程的qsf配置约束文件介绍
  • 【C语言】一道相当有难度的指针某大厂笔试真题(超详解)
  • 106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode)
  • RTE2023第九届实时互联网大会:揭秘未来互联网趋势,PPT分享引领行业新思考
  • Python基础篇_修饰符(Decorators)【下】
  • 常用的正则表达式
  • 一条 SQL 查询语句是如何执行的
  • 探索Spring Validation:优雅实现后端数据验证的艺术
  • 数据结构-->线性表-->单链表
  • JAVA面试题12
  • 信号——block+pending+handler表
  • C语言常见面试题:什么是常量?C语言中有哪些类型的常量?
  • Python 小白的 Leetcode Daily Challenge 刷题计划 - 20240209(除夕)
  • 初识文件包含漏洞
  • 【OpenHarmony硬件操作】风扇与温湿度模块
  • 【Spring】Spring 对 Ioc 的实现
  • kaggle实战语义分割-Car segmentation(附源码)
  • 数据库管理phpmyadmin
  • Linux C/C++ 原始套接字:打造链路层ping实现