Docker私有仓库Harbor-v1.10.1 Https Ip方式访问的安装配置

本文详细介绍Harbor私有仓库的环境准备、安装部署过程,包括离线安装、HTTPS配置及证书生成,以及如何验证HTTPS连接。

一、简介
Harbor是由VMware公司开源的企业级的Docker Registry管理项目,用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。
作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。
Harbor官方网站

Harbor项目开源地址

Harbor被部署为多个Docker容器。因此,您可以将其部署在任何支持Docker的Linux发行版上。目标主机需要Docker和Docker Compose才能安装。

二、环境准备
1、硬件需求
下表列出了用于部署Harbor的最低和建议的硬件配置。

ResourceMinimum
CPU2 CPU
Mem4 GB
Disk40 GB

2、软件需求
下表列出了必须在目标主机上安装的软件版本。

SoftwareVersion
Docker engine17.06.0-ce+ or higher
Docker Compose1.18.0 or higher
OpensslLatest is preferred

3、网络端口

PortProtocol
443HTTPS
4443HTTPS
80HTTP

4、安装方式
从官方发布git仓库页面下载Harbor安装程序 。
下载联机安装程序或脱机安装程序。
在线安装包
离线安装包
离线安装包百度云提取码:w55i

三、安装部署
本文采用离线方式安装

1、安装docker docker-compose

wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install epel-release -y
yum install docker-ce -y
yum install docker-compose -y
systemctl start docker &&systemctl enbale docker && systemctl status docker

查看docker版本和docker-compose版本


[root@hub2 /]# docker info
Client:
 Debug Mode: false

Server:
 Containers: 11
  Running: 11
  Paused: 0
  Stopped: 0
 Images: 103
 Server Version: 19.03.1
 
[root@hub2 /]# docker-compose -v
docker-compose version 1.18.0, build 8dd22a9

2、下载离线安装包并解压

#官方镜像下载,服务器在国外,速度较慢
wget https://github.com/goharbor/harbor/releases/download/v1.10.1/harbor-offline-installer-v1.10.1.tgz
#解压缩
tar xvf harbor-offline-installer-v1.10.1.tgz 
#查看
[root@hub2 ~]# tree harbor
harbor
├── common
│   └── config
│       ├── core
│       │   ├── app.conf
│       │   ├── certificates
│       │   └── env
│       ├── db
│       │   └── env
│       ├── jobservice
│       │   ├── config.yml
│       │   └── env
│       ├── log
│       │   ├── logrotate.conf
│       │   └── rsyslog_docker.conf
│       ├── nginx
│       │   ├── conf.d
│       │   └── nginx.conf
│       ├── registry
│       │   ├── config.yml
│       │   └── root.crt
│       └── registryctl
│           ├── config.yml
│           └── env
├── common.sh
├── docker-compose.yml  
├── harbor.v1.10.1.tar.gz
├── harbor.yml  #配置文件
├── install.sh
├── LICENSE
└── prepare

3、配置对Harbor的HTTPS访问
注:如果不使用https方式可以跳过此步骤,直接修改文件后部署,使用http方式在部署后需要在docker上添加为信任节点

vim  /etc/docker/daemon.json
{
 "insecure-registries" : ["192.168.21.210:5000"] #私有仓库地址
}

3.1生成证书颁发机构证书
生成CA证书私钥。

openssl genrsa -out ca.key 4096

生成CA证书。

#修改 yourdomain.com 为你的domain或者IP地址
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
 -key ca.key \
 -out ca.crt

3.2生成服务器证书
证书通常包含一个.crt文件和一个.key文件,例如yourdomain.com.crt和yourdomain.com.key。
生成私钥

openssl genrsa -out yourdomain.com.key 4096

生成证书签名请求(CSR)
调整-subj选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为公用名(CN)属性,并在密钥和CSR文件名中使用它。

#使用域名或者Ip地址替换命令中的"CN=yourdomain.com",域名需替换

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

生成一个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=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF

#使用ip直接访问方式修改模板x.x.x.x替换为你要设置的ip
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:x.x.x.x
EOF

注:使用域名访问方式,直接修改官方模板中的DNS.1 DNS.2 …

使用该v3.ext文件为您的Harbor主机生成证书。

#将yourdomain.comCRS和CRT文件名中的替换为Harbor主机名。
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in yourdomain.com.csr \
    -out yourdomain.com.crt

3.3提供证书给Harbor和Docker

mkdir -p /data/cert/
cp yourdomain.com.crt /data/cert/
cp yourdomain.com.key /data/cert/

3.4 docker客户端证书文件转换
转换yourdomain.com.crt为yourdomain.com.cert,供Docker使用。
Docker守护程序将.crt文件解释为CA证书,并将.cert文件解释为客户端证书。

openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert

3.5服务器证书拷贝
将服务器证书,密钥和CA文件复制到Harbor主机上的Docker certificate文件夹中。您必须首先创建适当的文件夹。

mkdir  -p /etc/docker/certs.d/yourdomain.com/
cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/
cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/
cp ca.crt /etc/docker/certs.d/yourdomain.com/

如果将默认nginx端口443 映射到其他端口,请创建文件夹/etc/docker/certs.d/yourdomain.com:port或/etc/docker/certs.d/harbor_IP:port。
以下示例说明了使用自定义证书的配置。

/etc/docker/certs.d/
    └── yourdomain.com:port
       ├── yourdomain.com.cert  <-- Server certificate signed by CA
       ├── yourdomain.com.key   <-- Server key signed by CA
       └── ca.crt               <-- Certificate authority that signed the registry certificate

4、修改配置文件harbor.yml
配置文件说明详情见官方文档:

vim /harbor/harbor.yml
hostname:      #Ip或者域名
...
# 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/yourdomain.com.crt    #证书文件路径
  private_key: /data/cert/yourdomain.com.key    #证书文件路径
  ...
  harbor_admin_password: Harbor12345   #admin管理员密码此为初始密码

5、部署或重新配置harbor
5.1运行prepare脚本以启用HTTPS。
Harbor将nginx实例用作所有服务的反向代理。您可以使用prepare脚本来配置nginx为使用HTTPS。

./prepare

5.2如果Harbor正在运行,请停止并删除现有实例,镜像数据保留在文件系统中,不会丢失任何数据。

docker-compose down -v

5.3重启harbor:

docker-compose up -d

注:如果是第一次安装Harbor,没有启动过,这里就需要执行安装脚本而不是执行docker-compose命令了。

./install.sh

四、验证HTTPS连接
为Harbor设置HTTPS之后,您可以通过执行以下步骤来验证HTTPS连接。

1、浏览器验证
打开浏览器,然后输入https://yourdomain.com。它应该显示Harbor界面。
某些浏览器可能会显示警告,指出证书颁发机构(CA)未知。使用不是来自受信任的第三方CA的自签名CA时,会发生这种情况。您可以将CA导入浏览器以删除警告。

在运行Docker守护程序的机器上,检查/etc/docker/daemon.json文件以确保-insecure-registry未为https://yourdomain.com设置该选项。

2、Docker客户端验证
从Docker登录Harbor。

docker login yourdomain.com

如果已将nginx443端口映射到其他端口,请在login命令中添加该端口。

docker login yourdomain.com:port

————————————————
原文链接:https://blog.youkuaiyun.com/edgar_t/article/details/105410985

<think>我们正在对比Rancher v2.7.5和v2.12.2的单机离线部署方式。根据引用内容,我们可以总结出一些通用的步骤,但也要注意版本差异。 注意:引用中提到了v2.9.2、v2.4.11和v2.4.2,但我们需要推断v2.7.5和v2.12.2的差异。 主要差异可能体现在以下几个方面: 1. 所需镜像列表不同(包括镜像名称和版本) 2. 部署命令的参数变化 3. 系统要求(如Docker版本、Kubernetes版本等) 4. 配置参数的变化 由于没有直接提供v2.7.5和v2.12.2的引用,我们只能根据已有的引用和一般版本升级的规律进行推测。 步骤: 1. 准备离线镜像仓库:两个版本都需要一个私有镜像仓库来存储所有必需的镜像。 2. 收集镜像:两个版本所需的镜像列表不同,因为随着版本升级,组件版本也会更新。 3. 部署Rancher:使用Docker命令运行Rancher容器,但可能环境变量等参数有变化。 根据引用[1]和[3]: - 在v2.4.2的部署中,我们使用`-e CATTLE_SYSTEM_DEFAULT_REGISTRY`来设置默认镜像仓库,并且使用了`CATTLE_SYSTEM_CATALOG=bundled`(自v2.3.0可用)。 - 在v2.9.2中,我们可以看到镜像列表中有很多新的组件(如rancher/shell, rancher/mirrored-pause等),这些组件的版本都是对应v2.9.2的。 对于v2.7.5和v2.12.2: - v2.12.2是更新的版本,所以它可能包含更多的组件和更新的组件版本。 - 部署命令的基本结构应该相同,但注意环境变量可能会有增减。 具体对比: 1. 镜像列表: 每个版本的Rancher都需要一组特定的镜像,包括Rancher自身镜像和一些依赖镜像(如coredns、pause、集群API控制器等)。随着版本升级,依赖的组件版本也会升级。 例如,在v2.9.2中,rancher/mirrored-coredns-coredns的版本是1.10.1,而在v2.12.2中可能会更新到更高的版本。 因此,部署不同版本时,必须使用对应版本的镜像清单(image list)来下载镜像。 2. 部署命令: 基本命令都是使用`docker run`来启动Rancher容器。 但注意,在v2.4.2中,我们使用了两个环境变量: - `CATTLE_SYSTEM_DEFAULT_REGISTRY`:设置默认镜像仓库 - `CATTLE_SYSTEM_CATALOG`:设置为`bundled`表示使用内嵌的Rancher system charts 在v2.7.5和v2.12.2中,这些环境变量可能仍然适用,但可能有新增的环境变量。 另外,从Rancher v2.5开始,Rancher安装方式做了一些改变,支持使用Helm在Kubernetes集群上安装,但单机版(Docker安装)仍然可用。 不过,我们讨论的是单机离线部署,所以还是使用Docker命令。 注意:在v2.5.0之后,Rancher的Docker安装方式被标记为遗留(legacy),但仍然支持。所以v2.7.5和v2.12.2都还能用Docker方式安装,但要注意官方文档的说明。 根据官方文档(引用[2]是v2.4.11的文档,但我们可以推断最新版本的文档结构),离线安装步骤大致相同,但具体细节需要查看对应版本的文档。 3. 重要变化: - 在Rancher v2.6.0中,引入了一个重要的变化:Rancher被重新设计为在任意Kubernetes集群上运行(包括单节点K3s集群)。但Docker单机安装仍然保留。 - 在v2.5.0之后,Rancher的系统Chart(如监控、日志等)从内置(bundled)改为了从GitHub或自定义仓库获取。因此,离线环境下需要配置系统Chart的离线仓库。但是,在单机Docker安装中,我们仍然可以使用`CATTLE_SYSTEM_CATALOG=bundled`来使用内置的Chart(如果该版本支持的话)。不过,在v2.5.0以后,官方推荐使用Helm安装,所以单机Docker安装可能不会包含最新的所有Chart。 然而,根据我们的问题,用户明确要求单机离线部署(即Docker方式),所以我们还是按照Docker运行的方式来对比。 4. 版本差异: 根据Rancher官方文档,从v2.6.0开始,Docker单机安装方式被标记为“Legacy”,但v2.7.5和v2.12.2都还支持这种方式。不过,v2.12.2版本可能会更加强调使用K3s集群安装(即通过Helm安装到K3s集群)的方式。 因此,部署步骤上可能不会有太大区别,但需要注意: - 镜像列表:必须使用对应版本的镜像列表。 - 环境变量:可能新增或弃用某些环境变量。 部署步骤(共同): a. 准备私有镜像仓库(如Harbor)。 b. 根据目标版本下载所需的Docker镜像(使用官方提供的脚本或手动下载)。 c. 将镜像推送到私有镜像仓库。 d. 使用Docker命令启动Rancher,并设置环境变量指向私有仓库。 对于v2.7.5: 我们可以参考v2.7.x版本的官方文档(离线安装部分)。同样,v2.12.2参考v2.12.x的文档。 环境变量示例(v2.7.5): ```bash docker run -d --restart=unless-stopped \ -p 80:80 -p 443:443 \ -e CATTLE_SYSTEM_DEFAULT_REGISTRY=<REGISTRY.YOURDOMAIN.COM:PORT> \ -e CATTLE_SYSTEM_CATALOG=bundled \ <REGISTRY.YOURDOMAIN.COM:PORT>/rancher/rancher:v2.7.5 ``` 对于v2.12.2: 根据官方文档(v2.6之后),单机Docker安装仍然支持,命令类似。但是,注意在v2.6.0之后,一些环境变量可能被弃用或新增。 然而,根据v2.12.2的官方文档(需要查阅),我们发现仍然可以使用类似的环境变量。不过,在v2.12.2中,可能不再需要`CATTLE_SYSTEM_CATALOG`,因为系统Chart的交付方式已经改变(例如,使用fleet来管理chart),但为了兼容性,可能仍然保留。 因此,v2.12.2的部署命令可能是: ```bash docker run -d --restart=unless-stopped \ -p 80:80 -p 443:443 \ -e CATTLE_SYSTEM_DEFAULT_REGISTRY=<REGISTRY.YOURDOMAIN.COM:PORT> \ <REGISTRY.YOURDOMAIN.COM:PORT>/rancher/rancher:v2.12.2 ``` 注意:在v2.12.2中,可能不需要`CATTLE_SYSTEM_CATALOG`参数了,因为默认行为可能已经改变。 5. 其他注意事项: - 在v2.7.5中,可能还需要设置`CATTLE_SYSTEM_CATALOG`为`bundled`,以确保使用内置的Chart(离线环境)。而在v2.12.2中,系统Chart可能已经不包含在容器内,而是需要预先下载并放到私有仓库中,然后在Rancher中配置私有Chart仓库。 但是,根据Rancher v2.5+的文档,单机Docker安装仍然会捆绑一部分系统Chart(称为`bundled`),所以`CATTLE_SYSTEM_CATALOG`在v2.12.2中可能还是可以使用的。不过,为了准确起见,应查阅对应版本的文档。 总结: 主要区别在于所需镜像列表不同和部署命令中环境变量的细微差别。特别是,v2.12.2可能需要更新的镜像,并且可能弃用了一些环境变量或者默认值发生变化。 建议: 为了准确部署,请查阅对应版本的官方离线安装文档: - Rancher v2.7.5:https://docs.rancher.cn/docs/rancher2.7/installation_new/other-installation-methods/air-gap/install-rancher/_index - Rancher v2.12.2:https://docs.rancher.cn/docs/rancher2.12/installation_new/other-installation-methods/air-gap/install-rancher/_index 注意:以上文档链接为推断,实际可能存在路径差异。 根据引用[3],我们注意到在v2.4.2中使用了`-e CATTLE_SYSTEM_CATALOG=bundled`,而引用[1]的v2.9.2镜像列表中有很多镜像,但没有提及部署命令。因此,在部署v2.7.5时,我们可以认为仍然需要这个环境变量。而对于v2.12.2,由于版本更新,最好查阅文档确认。 另外,在v2.12.2中,Rancher可能要求使用更高版本的Docker和操作系统。 因此,区别总结如下: | 项目 | Rancher v2.7.5 | Rancher v2.12.2 | |------------|-----------------------------------|-----------------------------------| | 镜像列表 | 使用v2.7.5对应的镜像(如rancher/rancher-agent:v2.7.5) | 使用v2.12.2对应的镜像(如rancher/rancher-agent:v2.12.2)以及其他依赖镜像的最新版本 | | 部署命令 | 包含`CATTLE_SYSTEM_CATALOG=bundled` | 可能不再需要此参数(需查证) | | 系统要求 | 需要满足v2.7.x的系统要求 | 可能需要更新的Docker版本和操作系统支持 | | 文档参考 | 参考v2.7.x文档 | 参考v2.12.x文档 | 为了确保正确性,请务必查阅对应版本的官方文档。 相关问题: 1. Rancher v2.12.2离线安装时如何准备系统Chart? 2. Rancher单机Docker安装方式在v2.6.0之后有什么变化? 3. 如何为Rancher离线安装获取正确的镜像列表? </think>### Rancher v2.7.5 与 v2.12.2 单机离线部署区别分析 #### 1. **镜像仓库配置差异** - **v2.7.5**: 使用 `CATTLE_SYSTEM_DEFAULT_REGISTRY` 指定私有仓库地址,需手动配置: ```bash -e CATTLE_SYSTEM_DEFAULT_REGISTRY=<私有仓库地址> ``` 依赖的组件镜像(如 CoreDNS、Pause 等)需与 Rancher 版本匹配[^1][^3]。 - **v2.12.2**: 引入了 **自动镜像仓库重定向** 功能(需 Kubernetes v1.21+)。通过 `CATTLE_SYSTEM_DEFAULT_REGISTRY` 设置后,系统自动重写镜像路径,简化配置[^2]。 --- #### 2. **依赖组件版本变化** | 组件 | v2.7.5 | v2.12.2 | |------------------|---------------------|-----------------------| | Kubernetes 支持 | v1.20.x 及以下 | v1.25.x(默认) | | CoreDNS | 1.8.x | 1.13.x | | Cluster API | v1.0.x | v1.6.x | | Helm Chart 仓库 | 需离线同步 | 支持 Airgap Bundle | > 📌 **注意**:v2.12.2 的镜像列表包含更多 `mirrored` 组件(如 `rancher/mirrored-ingress-nginx`),对网络隔离环境更友好[^1]。 --- #### 3. **部署命令参数变化** - **v2.7.5**: 需显式禁用 Helm 在线源(避免网络访问): ```bash -e CATTLE_SYSTEM_CATALOG=bundled ``` - **v2.12.2**: 默认使用离线 Bundle(无需额外参数),内置: - Rancher Chart (v2.12.x) - Monitoring v16.x - Logging v4.x --- #### 4. **安全与认证增强** - **v2.12.2** 新增: - 强制 TLS 1.3 支持(需 OpenSSL 1.1.1+) - 自动生成自签名证书时增强 SAN 校验 - 更严格的 etcd 加密配置(默认启用 KMS v2) --- #### 5. **离线校验机制** - **v2.7.5**: 依赖人工比对 [rancher-images.txt](https://github.com/rancher/rancher/releases) 确保镜像完整。 - **v2.12.2**: 提供 `rancher-airgap-verify` 工具,自动校验镜像哈希和 Chart 完整性[^2]。 --- ### 部署流程对比 | 步骤 | v2.7.5 | v2.12.2 | |--------------------|-----------------------------------|-----------------------------------| | 1. 准备私有仓库 | 手动上传所有依赖镜像 | 使用 Airgap Bundle 自动导入 | | 2. 启动容器 | 需设置 `CATTLE_SYSTEM_CATALOG` | 仅需 `CATTLE_SYSTEM_DEFAULT_REGISTRY` | | 3. 证书配置 | 手动挂载证书文件 | 支持自动生成 + KMS 集成 | | 4. 系统 Chart 安装 | 需离线同步 Helm 仓库 | Bundle 内置最新版本 | > 💡 **建议**:v2.12.2 的改进显著简化了离线部署,尤其是通过 [Airgap Bundle](https://docs.rancher.cn/docs/rancher2.12/installation_new/resources/local-system-charts/_index) 机制降低了人工干预成本[^2]。 --- ### 相关问题 1. 如何为 Rancher v2.12.2 准备离线镜像 Bundle? 2. Rancher 从哪个版本开始默认支持 Kubernetes v1.25+? 3. 离线环境下如何更新 Rancher 单机部署的版本? 4. Rancher 的 Airgap Bundle 包含哪些关键组件? [^1]: 离线环境部署需严格匹配镜像版本,详见镜像清单梳理步骤 [^2]: v2.12.x 引入的 Airgap Bundle 机制显著简化了离线流程 [^3]: 早期版本依赖手动配置系统仓库和环境变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值