Harbor 仓库安装 - 基认证的容器镜像仓库

Harbor 仓库安装 - 基认证的容器镜像仓库 一、Harbor 概览1.1.Harbor 的核心定位Harbor 是由 VMware 开源的企业级 Docker 镜像仓库专为解决容器化应用在企业级部署中的痛点而设计。它提供了镜像存储、管理、安全和分发的全生命周期管理是 Docker Registry 的企业级增强版本。1.2.核心功能与用途镜像存储与分发支持多租户隔离通过 “项目” 组织镜像资源提供 HTTP/HTTPS 协议访问支持镜像的拉取、推送和复制兼容 Docker 和 OCI 镜像格式企业级安全能力基于角色的访问控制RBAC镜像内容扫描集成 Clair镜像签名与验证支持 Notary审计日志记录所有操作高可用性与扩展性支持分布式部署和跨数据中心同步可扩展的存储后端本地文件系统、S3、Ceph 等水平扩展的微服务架构与云原生生态集成无缝对接 Kubernetes、Helm、Jenkins 等工具支持 Helm Chart 仓库需启用 ChartMuseum提供 Webhook 支持 CI/CD 流水线1.3.核心优势企业级安全防护通过镜像扫描实现漏洞检测CVE 分析支持镜像签名确保来源可信细粒度的权限控制项目→仓库→标签高效协作与管理基于项目的资源隔离镜像版本管理与标签策略支持镜像复制与垃圾回收高可用架构设计分布式部署架构支持跨数据中心容灾负载均衡与自动故障转移支持容器化部署Docker Compose/Kubernetes成本优化镜像分层存储减少冗余支持镜像代理缓存加速拉取离线安装包支持内网环境开放生态集成兼容 Docker CLI 和 OCI 标准支持与 Prometheus、Grafana 集成监控提供 RESTful API 支持二次开发1.4.典型应用场景私有云 / 混合云环境企业内部镜像存储库替代 Docker Hub跨公有云 / 私有云的镜像同步CI/CD 流水线作为镜像仓库支撑持续集成与部署结合 Jenkins 实现自动化构建 - 测试 - 发布微服务架构管理大量微服务镜像版本支持灰度发布与回滚敏感数据保护金融、医疗等行业的镜像加密存储审计日志满足合规性要求二、安装配置 Harbor2.1.安装 Docker-ce构建 Docker 软件仓库用于下载 Docker。cat /etc/yum.repos.d/docker.repo EOF [docker] namedocker baseurlhttps://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/rhel/9.3/x86_64/stable/ gpgcheck0 EOF安装 Docker-ceyum install docker-ce -y2.2.配置加速器在安装 Docker 后配置 /etc/docker/daemon.json 文件并添加加速器地址具有多方面的重要作用以下为你详细介绍2.2.1.作用加速镜像拉取过程在默认情况下Docker 从 Docker Hub 等官方镜像仓库拉取镜像时由于网络等因素速度可能会比较慢。尤其是在国内由于网络距离以及网络限制等问题拉取镜像的速度常常不尽人意。通过配置 /etc/docker/daemon.json 文件添加加速器例如阿里云、网易云等提供的镜像加速器服务Docker 会优先从这些加速器节点获取镜像。这些加速器节点通常在国内有多个数据中心并且和 Docker Hub 等官方仓库有稳定快速的连接能缓存大量常用镜像。这样一来当你拉取镜像时就可以直接从离你较近且速度快的加速器节点获取大大缩短了镜像拉取的时间。提高镜像拉取的稳定性网络状况不稳定可能导致镜像拉取过程中出现中断、超时等问题使得拉取操作失败这会影响开发和部署的进度。镜像加速器通过优化网络架构和采用分布式存储等技术能够提供更稳定的服务。即使 Docker Hub 等官方仓库出现网络故障或者负载过高的情况加速器节点依然可以为你提供镜像服务保证镜像拉取的稳定性。节省网络带宽和成本由于镜像加速器节点可以缓存镜像当多个用户或者多台服务器通过同一个加速器拉取相同镜像时加速器节点可以直接提供缓存的镜像无需每次都从官方仓库重新下载。这样不仅减少了对官方仓库的访问压力也降低了对本地网络带宽的占用对于企业级用户来说还能在一定程度上节省网络带宽成本。支持多镜像源/etc/docker/daemon.json 文件除了可以配置镜像加速器地址还可以配置多个镜像源。这意味着你可以根据不同的需求指定从不同的镜像仓库拉取镜像。例如你可以同时配置 Docker Hub 的加速器和国内其他的镜像仓库地址当 Docker 在拉取镜像时会按照配置的顺序依次尝试从这些镜像源获取增加了获取镜像的途径和灵活性。对 Docker 守护进程进行更多配置/etc/docker/daemon.json 文件不仅仅用于配置镜像加速器它还是 Docker 守护进程的配置文件。你可以在这个文件中进行其他各种配置如调整 Docker 日志的存储方式、限制容器的资源使用、开启实验性特性等。2.2.2.配置cat /etc/docker/daemon.json EOF { registry-mirrors: [ https://docker.m.daocloud.io, https://docker.imgdb.de, https://docker-0.unsee.tech, https://docker.hlmirror.com, https://docker.1ms.run, https://func.ink, https://lispy.org, https://docker.xiaogenban1993.com ] } EOF加载配置并启动 Docker。systemctl daemon-reload systemctl enable --now docker2.3.搭建基于认证的 Docker2.3.1.生成认证 Key 和证书创建存放证书的目录。mkdir /root/certs生成证书和 Key。openssl req -newkey rsa:4096 -nodes -sha256 -keyout /root/certs/harbor.org.key -addext subjectAltName DNS:reg.harbor.org -x509 -days 365 -out /root/certs/harbor.org.crtopenssl req使用 openssl req 命令创建、处理证书签名请求结合参数生成自签名证书-newkey rsa:4096用 RSA 算法生成 4096 位新私钥位数越高安全性越好-nodes私钥不加密方便使、用但要保障文件安全-sha256使用 SHA - 256 哈希算法保障证书完整性-keyout /root/certs/harbor.org.key指定私钥输出路径和文件名-adext subjectAltName DNS:reg.harbor.org为证书添加主题备用名称扩展指定适用域名-x509直接生成自签名的 X.509 证书-days 365设置证书有效期为 365 天-out /root/certs/harbor.org.crt指定自签名证书输出路径和文件名注意-addext subjectAltName DNS:reg.harbor.org 参数该参数为证书添加了主题备用名称指定证书可用于访问 reg.harbor.org 这个域名。在现代的 TLS 配置中浏览器和客户端通常会检查证书的主题备用名称。如果证书的主题备用名称与实际访问的域名不匹配客户端会提示证书无效。如果需要支持多个域名可以使用逗号分隔多个 DNS 条目例如 -addext subjectAltName DNS:reg.harbor.org,DNS:another.harbor.org。2.3.2.Docker 加载证书支持私有镜像仓库的 TLS 认证在使用 Docker 与私有镜像仓库如 Harbor进行交互时为确保通信安全通常会使用 TLS传输层安全协议加密。私有镜像仓库一般会使用 SSL/TLS 证书来验证其身份防止中间人攻击并保证数据在传输过程中的保密性和完整性。Docker 客户端默认信任系统的 CA 证书但私有镜像仓库的证书可能是自签名证书或者由私有 CA 颁发这些证书不会被 Docker 客户端默认信任。此时就需要将私有镜像仓库的证书添加到 Docker 客户端的信任列表中。/etc/docker/certs.d 是 Docker 客户端用于存储自定义证书的目录其下的每个子目录对应一个特定的镜像仓库域名。/etc/docker/certs.d/reg.harbor.org 就是为 reg.harbor.org 这个私有镜像仓库准备的证书存储目录。通过在该目录下放置对应的证书文件Docker 客户端在与 reg.harbor.org 进行通信时会自动读取这些证书并验证仓库的身份。# 创建 docker 存放证书的目录 mkdir -p /etc/docker/certs.d/reg.harbor.org # 拷贝前面生成的证书到此目录下 cp /root/certs/harbor.org.crt /etc/docker/certs.d/reg.harbor.org/ca.crt # 重启 docker systemctl restart docker2.4.安装 Harbor2.4.1.下载解压 Harbor# 在家目录下下载 harbor并解压到当前目录 wget https://github.com/goharbor/harbor/releases/download/v2.5.4/harbor-offline-installer-v2.5.4.tgz tar zxf harbor-offline-installer-v2.5.4.tgz # hosts 解析 echo /etc/hosts EOF 192.168.67.141 reg.docker.org EOF2.4.2.修改配置文件cd /root/harbor cp harbor.yml.tmpl harbor.yml vim /root/harbor/harbor.yml编辑以下内容。2.4.3.证书认证./install.sh --with-chartmuseum # 报错找不到认证文件需拷贝证书到 harbor 配置文件所指定目录下 cp -r /root/certs/ /data/ cd /root/harbor/ ./install.sh --with-chartmuseum # 再次安装 harbor# Harbor 出问题时可用下两条命令重启 Harbor # docker compose down # 用于清理 Docker Compose 项目所创建的资源让环境恢复到初始状态。 # docker compose up -d # 用于根据配置文件创建并在后台启动容器开启项目的运行。这两条命令通常结合使用在开发、测试和部署过程中发挥重要作用。./install.sh这表示执行当前目录下的 install.sh 脚本。在 Harbor 的安装包中install.sh 是官方提供的用于自动化安装 Harbor 的脚本。--with-chartmuseum这是 install.sh 脚本的一个参数选项。ChartMuseum 是一个开源的 Helm Chart 仓库服务器Harbor 从 1.6 版本开始支持集成 ChartMuseum。使用 --with-chartmuseum 参数意味着在安装 Harbor 的过程中会同时安装并集成 ChartMuseum 服务。执行 ./install.sh --with-chartmuseum 操作的主要目的是让 Harbor 具备 Helm Chart 仓库的功能具体体现在以下几个方面支持 Helm Chart 存储与管理Helm 是 Kubernetes 的包管理工具Helm Chart 是描述一组 Kubernetes 资源的文件集合。通过集成 ChartMuseumHarbor 可以作为 Helm Chart 的存储仓库用户能够方便地将自己创建的 Helm Chart 上传到 Harbor 中进行存储和管理。这有助于团队内部共享和复用 Helm Chart提高开发和部署效率。实现 Helm Chart 的版本控制Harbor 集成 ChartMuseum 后可以对 Helm Chart 进行版本管理。用户可以为不同版本的 Helm Chart 打标签方便追踪和回滚到特定版本的部署。这对于生产环境中的应用更新和故障恢复非常重要。增强安全性和访问控制Harbor 本身提供了丰富的安全功能如基于角色的访问控制RBAC、镜像扫描等。集成 ChartMuseum 后这些安全功能同样适用于 Helm Chart。管理员可以根据用户角色和权限精确控制哪些用户可以上传、下载和管理 Helm Chart从而保障 Helm Chart 的安全性。与现有 Harbor 功能集成将 ChartMuseum 集成到 Harbor 中可以与 Harbor 的其他功能无缝集成如日志记录、审计等。这使得整个容器镜像和 Helm Chart 的管理过程更加统一和高效方便运维人员进行监控和管理。综上所述使用 ./install.sh --with-chartmuseum 命令安装 Harbor 可以让 Harbor 具备 Helm Chart 仓库的功能为 Kubernetes 应用的部署和管理提供更全面的支持。2.5.测试浏览器访问 IP输入用户名默认 admin和密码上述配置文件里所修改的harbor_admin_password进入 harbor 界面。创建一个新的项目选择公开所有人多可以下载。三、推送镜像3.1.打标签推送镜像docker login reg.harbor.org docker tag nginx:v3 reg.harbor.org/openlab/nginx:v3 # 打标签解释如下 docker push reg.harbor.org/openlab/nginx:v3docker tag 命令用于为本地的 Docker 镜像添加一个新的标签。在将本地镜像推送到远程仓库时需要按照远程仓库的要求为镜像添加合适的标签标签中包含了远程仓库的地址、项目名称和镜像版本等信息。reg.harbor.org 是 Harbor 镜像仓库的地址openlab 是 Harbor 中的项目名称用于对镜像进行分类管理nginx 是镜像名称v3 是镜像版本标签。3.2.测试刷新 Harbor 浏览器界面可以看到刚推送上来的镜像。四、客户端拉取镜像前提客户端也需下载 Docker-ce配置加速器如上步骤 2.1 和 2.24.1.Hosts 解析cat /etc/hosts EOF 192.168.67.141 reg.harbor.org EOF4.1.Docker 加载 Harbor 证书TLS 双向认证Harbor 使用 HTTPS 通信时客户端必须信任 Harbor 的证书CA 签名或自签名否则会因证书验证失败拒绝连接。Docker 证书机制Docker 客户端默认信任系统证书库如 /etc/pki/ca-trust/但私有证书需手动添加到 certs.d 目录。mkdir -p /etc/docker/certs.d/reg.harbor.org scp /etc/docker/certs.d/reg.harbor.org/ca.crt 192.168.67.142:/etc/docker/certs.d/reg.harbor.org/ca.crt # 从 Harbor 主机拷贝证书到客户端主机上 systemctl restart docker4.2.拉取镜像docker pull reg.harbor.org/openlab/nginx:v3