Docker 私有镜像仓库 Harbor 安装部署带签名认证

news/2025/9/24 11:24:02/文章来源:https://www.cnblogs.com/dataverse/p/19108821

Docker 私有镜像仓库 Harbor 安装部署带签名认证

1. 准备工作

1.1 服务器信息

IP 主机名 内存(GB) CPU核数 磁盘 操作系统 CPU 架构 Docker 版本 角色
10.0.0.13 arc-pro-dc01 8 1 500GB CentOS 7.9.2009 x86_64 docker 28.1.1
docker-compose v2.39.2
私有 Registry 服务端
10.0.0.14 arc-pro-dc02 8 1 500GB CentOS 7.9.2009 x86_64 docker 28.1.1
docker-compose v2.39.2
docker 客户端

必须:

  • Registry 服务端设置一个域名,比如 my.registry.com
  • 客户端需要使用域名访问 Registry 服务端,所以要求每个客户端都可以识别服务端的域名

即在客户端和服务端的 /etc/hosts 文件中,存在:

10.0.0.13	arc-pro-dc01	my.registry.com

在使用浏览器访问私服的 Windows 电脑上修改:C:\Windows\System32\drivers\etc\hosts 文件,确保存在:

10.0.0.13	arc-pro-dc01	my.registry.com

参考以下文章完成虚拟机创建、虚拟机优化、集群基础配置以及 Docker 的安装部署:

  • 使用 VMware Workstation 安装 CentOS-7 虚拟机
  • 使用 Ansible 批量完成 CentOS 7 操作系统基础配置
  • 使用 Ansible 批量安装 Docker

1.2 准备 harbor 离线安装包

下载地址:https://github.com/goharbor/harbor/releases/

文件:harbor-offline-installer-v2.13.2.tgz

上传到 arc-pro-dc01 服务器 /opt/app 目录下

1.3 准备 TLS 文件

在 arc-pro-dc01 服务器操作

$ sudo su - 
$ cd /opt/app
$ ls
harbor-offline-installer-v2.13.2.tgz$ yum install ca-certificates -y
$ mkdir -p /etc/ssl/private
$ mkdir -p /usr/local/share/ca-certificates
$ openssl genrsa -out /etc/ssl/private/selfsignroot.key 4096# C (Country Name) 国家代码,使用 ISO 两位字母表示,例如:CN 中国 US 美国
# ST (State or Province Name) 州、省、自治区的名字,全称或缩写均可。例如:Guangdong、California
# L (Locality Name) 城市或地区名。例如:Shenzhen、Beijing
# O (Organization Name) 组织或公司名称。例如:Tencent、Alibaba、Example Corp
# OU (Organizational Unit Name) 组织单位(部门、分公司)。例如:IT Department、Security Team
# CN (Common Name) 常用名,通常填写【域名】或【个人名字】:$ openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=Personal/OU=Personal/CN=my.registry.com" \
-key /etc/ssl/private/selfsignroot.key \
-out /usr/local/share/ca-certificates/selfsignroot.crt$ openssl genrsa -out /etc/ssl/private/registry.key 4096# CN=arc-pro-dc01,服务器主机名
$ openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=Personal/OU=Personal/CN=my.registry.com" \
-key /etc/ssl/private/registry.key \
-out registry.csr# 生成 openssl cnf 扩展文件
# 注意:DNS.1 = my.registry.com,一定要改成你自己的主机名
$ cat > certs.cnf << EOF
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = my.registry.com
EOF# 签发证书
$ openssl x509 -req -in registry.csr \
-CA /usr/local/share/ca-certificates/selfsignroot.crt \
-CAkey /etc/ssl/private/selfsignroot.key -CAcreateserial \
-out /etc/ssl/certs/registry.crt \
-days 3650 -extensions v3_req -extfile certs.cnf# 信任根证书
# ubuntu 系统执行
$ update-ca-certificates
# centos 系统执行
$ update-ca-trust

2. 部署

$ sudo su - 
$ cd /opt/app
$ ls
certs.cnf  harbor-offline-installer-v2.13.2.tgz  registry.csr $ tar xf harbor-offline-installer-v2.13.2.tgz
$ cd harbor# 修改配置文件 harbor.yml(未列出的配置保持默认)
$ cp harbor.yml.tmpl harbor.yml
$ vim harbor.yml# 修改 hostname,修改为域名,而且一定是证书签发的域名
hostname: my.registry.com
# 修改 harbor_admin_password,访问密码
harbor_admin_password: 123456
https:port: 10443 # 默认 443,按需修改certificate: /etc/ssl/certs/registry.crt # 证书private_key: /etc/ssl/private/registry.key # 密钥
# 修改数据盘,默认是 /data
data_volume: /data/harbor# 执行脚本,下载镜像
$ ./prepare$ docker images
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
goharbor/prepare   v2.13.2   53905b30703f   6 weeks ago   208MB# 安装
$ ./install.sh...
✔ ----Harbor has been installed and started successfully.----# 服务文件
$ cat > /etc/systemd/system/harbor.service <<EOF
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose -f /opt/app/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f /opt/app/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
EOF$ systemctl daemon-reload
$ systemctl enable harbor.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/harbor.service to /etc/systemd/system/harbor.service.# 清理安装包
$ cd ../
$ rm -f harbor-offline-installer-v2.13.2.tgz certs.cnf registry.csr

image

image

image

image

3. 客户端配置

arc-pro-dc02 服务器操作,使用 admin 用户操作

# 最后一级目录名一定是:私服域名:端口
$ sudo mkdir -p /etc/docker/certs.d/my.registry.com:10443
# 把服务端的 crt 文件拷贝给客户端
$ sudo scp my.registry.com:/etc/ssl/certs/registry.crt /etc/docker/certs.d/my.registry.com:10443/ca.crt# 设置服务端的账号密码
$ echo -n "admin:123456" | base64 # 输出 YWRtaW46MTIzNDU2$ mkdir -p ~/.docker$ tee ~/.docker/config.json > /dev/null <<-'EOF'
{"auths": {"my.registry.com:10443": {"auth": "YWRtaW46MTIzNDU2"}}
}
EOF# 如果没有配置 ~/.docker/config.json 文件,则在访问私有镜像仓库之前,要先登录
# 记录下登录私服的命令
$ docker login my.registry.com:10443 -u admin -p 123456

4. 测试

在 arc-pro-dc02 操作

$ docker pull nginx:1.29.1$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        1.29.1    41f689c20910   4 weeks ago   192MB# 格式:域名:端口/项目名/镜像名/TAG
# harbor 默认的项目名是 library
$ docker tag nginx:1.29.1 my.registry.com:10443/library/nginx:1.29.1$ docker images
REPOSITORY                            TAG       IMAGE ID       CREATED       SIZE
nginx                                 1.29.1    41f689c20910   4 weeks ago   192MB
my.registry.com:10443/library/nginx   1.29.1    41f689c20910   4 weeks ago   192MB# 推送
$ docker push my.registry.com:10443/library/nginx:1.29.1# 删除所有本地镜像
$ docker rmi my.registry.com:10443/library/nginx:1.29.1
$ docker rmi nginx:1.29.1
$ docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE# 拉取
$ docker pull my.registry.com:10443/library/nginx:1.29.1$ docker images
REPOSITORY                            TAG       IMAGE ID       CREATED       SIZE
my.registry.com:10443/library/nginx   1.29.1    41f689c20910   4 weeks ago   192MB

检查下仓库:

image

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

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

相关文章

ARC180 做题记

训A () 题意 题解 \(\bf{record}\) B () 题意 题解 \(\bf{record}\) C () 题意 题解 \(\bf{record}\) D () 题意 题解 \(\bf{record}\)

借助Aspose.HTML控件,使用 Python 编辑 HTML

通过编程方式重构HTML文件可以节省时间和精力。Aspose.HTML SDK提供了一种强大且无缝的使用 Python 编辑 HTML 的方法。使用此 SDK,您可以自动化修改现有 HTML 文件。通过编程方式重构HTML文件可以节省时间和精力。As…

微前端 micro-app 在vue 中的路由跳转问题

微前端 micro-app 在vue 中的路由跳转问题end .

汕头模板建站平台有没有免费的seo网站

IIS-Apache-Tomcat的区别 IIS与Tomcat的区别 IIS是微软公司的Web服务器。主要支持ASP语言环境. Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技术的标准实现&#xff0c;是基于Apache许可证下开发的SJP语言环境容器,严格得说不能算是一个WEB服务器,而是Apache服务适配器。 …

南城区网站仿做手机照片制作成相册

首先机器人端启动摄像头。 pc端用rqt_image_view就可以打开rqt工具&#xff0c;然后选择话题&#xff0c;就看到摄像头图像了。 下面是compressed话题和不是compressed话题的对比&#xff0c;这两个话题带宽有倍数级差异。 然后就可以用opencv做一些事情。下面这个其实就是机器…

1. 设计模式--工厂办法模式

1. 设计模式--工厂办法模式pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", …

汽车视频总线采集过程中,如何兼顾响应速度和可靠性?

汽车测试中“快速响应”与“技术可靠”难以兼得?本文详解如何基于ADTF模块化平台,通过图形化连接Filter组件,无需编码即可快速集成多路视频与总线数据,实现高精度同步采集与无丢包采集录制,破解多设备同步与高带宽…

P8865 [NOIP2022] 种花

P8865 [NOIP2022] 种花#include <bits/stdc++.h> using namespace std;const int mod = 998244353,maxn = 1e3 + 10; int a[maxn][maxn],down[maxn][maxn],r[maxn][maxn],up[maxn][maxn];int main(){int T,id;ci…

traefik 反向代理 + IdentityServer4

traefik 反向代理 + IdentityServer4

店铺的网站怎么做精品成品网站1688

1、安装 docker a、使用 Homebrew 安装 brew install --cask --appdir/Applications docker b、手动下载安装 1、安装包下载地址&#xff1a;Install Docker Desktop on Mac | Docker Docs 根据自己的笔记本型号选择&#xff0c;我这边选择的是 intel chip 2、下载安装即可&a…

在线一键建站系统wordpress 登陆 403

文章目录 一、问题描述二、解决方法 一、问题描述 当我们在代码页面上引入Vue.js(开发版本)时&#xff0c;运行代码会出现以下提示&#xff0c;这句话的意思是&#xff1a;您正在开发模式下运行Vue&#xff0c;在进行生产部署时&#xff0c;请确保打开生产模式 You are runni…

麦角硫因制备关键技术和设备

麦角硫因制备概述 麦角硫因(L-Ergothioneine,简称EGT)是一种天然的稀有手性氨基酸衍生物,具有强大的抗氧化、抗衰老和细胞保护功能。它最初于1909年从麦角真菌中分离而出,现广泛应用于化妆品、食品和医药领域。由…

2025年十大好用网盘推荐:功能、口碑与性价比大对比

不知如何选择网盘?本文为解决此难题,深度评测并盘点了2025年十大热门网盘,涵盖坚果云、百度网盘、阿里云盘等。文章从功能特色、数据安全、团队协作等多维度进行对比分析,旨在帮助用户依据自身需求,精准挑选出最适…

Word-通过宏格式化文档中的表格和图片

1、打开Word文档,找到视图。 2、创建宏脚本Sub 表格格式化()On Error Resume Next 忽略合并单元格等错误Application.ScreenUpdating = FalseDim tbl As Table, col As ColumnDim counter As Integer: counter = …

常用网站建设软件wordpress 幻灯片标签

摘要 本论文主要论述了如何使用JAVA语言开发一个音乐网站与分享平台 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述音乐网站与分享平台的当前背景以及系统开…

有多少个购物网站网站建设与管理模拟试卷

很多媒体大肆宣扬Fortnite和Roblox是元宇宙UGC平台巨头的竞争对手,但实际上它们似乎各自占据了UGC游戏市场的不同部分。对于Fortnite来说,主要是射击游戏;而对于Roblox来说,则是其他所有类型的游戏。 至少在目前,这两个平台在市场定位和用户群体上有着明显的差异,它们的…

徐州企业网站排名优化微信用大型网站站做跳板

本文为第0篇 专栏简介 本专栏是优质Rust技术专栏&#xff0c;推荐精通一门技术栈的蟹友&#xff0c;不建议基础的同学&#xff08;无基础学Rust也是牛人[手动捂脸]&#xff09; 感谢Rust圣经开源社区的同学&#xff0c;为后来者提供了非常优秀的Rust学习资源 本文使用&…

反向代理 traefik - 健康检查

反向代理 traefik 配置end.

一些想法 - CelestialZ

引言 这并不是我开通的第一个博客,我在中学时期也在zhihu、bilibili上记录数学学习经历。我希望这个因辅修cs而创建的博客账号,能记录一些我学习cs的历程。以下是我对后续博客内容的展望,可能与实际情况有出入,可能…

使用 Ansible 批量安装 Docker

使用 Ansible 批量安装 Docker1. 主机列表IP 主机名 内存(GB) CPU核数 磁盘 操作系统 CPU 架构10.0.0.13 arc-pro-dc01 8 1 500GB CentOS 7.9.2009 x86_6410.0.0.14 arc-pro-dc02 8 1 500GB CentOS 7.9.2009 x86_641…