尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Harbor 从 HTTP 部署到 HTTPS 改造全流程
目标先在 Ubuntu 26.04 上部署好容器环境再以 HTTP 方式快速跑通 Harbor最后平滑切换到 HTTPS 并让所有客户端适配信任。目录[TOC](目录)一、文档说明与前置条件1.1 适用版本与环境1.2 拓扑与关键参数按需替换1.3 整体改造链路二、Docker 部署Ubuntu 26.042.1 卸载旧版本如存在2.2 配置 Docker apt 软件源这里提供官方和阿里云源。源二选一即可2.2.1 官方源2.2.2 阿里云镜像源2.3 安装 Docker Engine2.4 启动并验证 Docker2.5 配置镜像加速与 daemon 参数可选但推荐2.6 免 sudo 使用 Docker可选三、Docker Compose 部署二选一3.1 方式一docker compose 插件推荐3.2 方式二docker-compose 独立二进制可选3.3 验证 Compose 可用四、阶段一HTTP 模式部署 Harbor4.1 获取并解压 Harbor4.2 配置 harbor.ymlHTTP 模式4.3 预导入镜像并安装4.4 注册为 systemd 服务开机自启4.5 登录 Harbor 界面4.6 HTTP 模式下让 Docker 客户端访问仓库4.7 HTTP 登录、推送与拉取验证五、阶段二HTTPS 改造5.1 改造思路5.2 准备 SSL 证书5.2.1 生成 CA 自签名证书5.2.2 生成 Harbor 主机私钥与证书申请5.2.3 创建 x509 v3 扩展文件SAN新版必须5.2.4 用 CA 为 Harbor 主机颁发证书5.3 修改 harbor.yml 启用 HTTPS5.4 应用配置并重启5.5 服务端 Docker 客户端适配HTTPS 信任5.5.1 转换证书格式5.5.2 创建同名目录并放置证书5.5.3 移除 insecure-registries5.5.4 验证 HTTPS 登录5.6 其他客户端适配六、常见问题与排错七、参考资料一、文档说明与前置条件1.1 适用版本与环境项值说明操作系统Ubuntu 26.04 LTS代号 resolute其他发行版命令略作调整Docker Engine最新稳定版5.x通过官方 apt 源安装高于官方要求 20.10Docker Composedocker compose v2插件方式通过docker-compose-plugin安装Harbor 版本v2.15.3离线包harbor-offline-installer-v2.15.3.tgzOpenSSL任意较新版本用于签发 HTTPS 证书1.2 拓扑与关键参数按需替换角色主机IP域名 / 端口Harbor 服务端ubuntu26-13192.168.1.70HTTP:80→ HTTPSharbor-study.com:443客户端示例访问harbor-study.comCA 域名示例——harbor-study.com文中192.168.1.70、harbor-study.com、harbor、123456均为示例值实际部署时请全局替换为你的环境参数。1.3 整体改造链路阶段一环境与 HTTP 阶段二HTTPS ───────────────────── ──────────────────────────── Docker 部署 停止服务、备份配置可选 Docker Compose 部署 生成 CA 与 Harbor 主机证书含 SAN 获取并解压 Harbor 修改 harbor.yml 启用 HTTPS 配置 harbor.ymlHTTP ./prepare 重启服务 ./prepare install.sh 服务端 Docker 客户端信任证书 注册 systemd 服务 移除 insecure-registries 配置 insecure-registries HTTPS 登录、推送、拉取验证 HTTP 登录、推送、拉取验证二、Docker 部署Ubuntu 26.04推荐使用 Docker 官方 apt 仓库安装便于后续升级国内服务器可换用阿里云镜像源。2.1 卸载旧版本如存在发行版自带的非官方 Docker 包可能与官方包冲突先统一卸载提示未安装可忽略sudoaptremove$(dpkg --get-selections docker.iodocker-composedocker-compose-v2 docker-doc docker-buildx podman-docker containerd runc|cut-f1)该操作不会删除/var/lib/docker下的镜像、容器、卷等数据如需干净重装可自行清理该目录。2.2 配置 Docker apt 软件源这里提供官方和阿里云源。源二选一即可2.2.1 官方源# 安装基础依赖并准备密钥目录sudoaptupdatesudoaptinstall-yca-certificatescurlsudoinstall-m0755-d/etc/apt/keyrings# 添加 Docker 官方 GPG 密钥sudocurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg-o/etc/apt/keyrings/docker.ascsudochmodar /etc/apt/keyrings/docker.asc# 写入软件源deb822 格式Ubuntu 26.04 自动识别为 resolutesudotee/etc/apt/sources.list.d/docker.sources/dev/nullEOF Types: deb URIs: https://download.docker.com/linux/ubuntu Suites:$(./etc/os-releaseecho${UBUNTU_CODENAME:-$VERSION_CODENAME})Components: stable Architectures:$(dpkg --print-architecture)Signed-By: /etc/apt/keyrings/docker.asc EOFsudoaptupdate2.2.2 阿里云镜像源将上面的URIs与密钥地址替换为阿里云即可其余一致sudoaptupdatesudoaptinstall-yca-certificatescurlsudoinstall-m0755-d/etc/apt/keyringssudocurl-fsSLhttps://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg-o/etc/apt/keyrings/docker.ascsudochmodar /etc/apt/keyrings/docker.ascsudotee/etc/apt/sources.list.d/docker.sources/dev/nullEOF Types: deb URIs: https://mirrors.aliyun.com/docker-ce/linux/ubuntu Suites:$(./etc/os-releaseecho${UBUNTU_CODENAME:-$VERSION_CODENAME})Components: stable Architectures:$(dpkg --print-architecture)Signed-By: /etc/apt/keyrings/docker.asc EOFsudoaptupdate2.3 安装 Docker Engine一条命令安装 Docker 引擎、命令行、运行时及 Buildx / Compose 插件sudoaptinstall-ydocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin如需安装指定版本先查看可用版本再安装aptlist --all-versions docker-ce# VERSION_STRING5:29.8.2-1~ubuntu.26.04~resolute# sudo apt install -y docker-ce$VERSION_STRING docker-ce-cli$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin2.4 启动并验证 Dockersudosystemctlenable--nowdockersudosystemctl statusdockersudodockerversionsudodockerrun--rmhello-world# 能打印 Hello from Docker! 即成功2.5 配置镜像加速与 daemon 参数可选但推荐拉取公共镜像慢时可在/etc/docker/daemon.json配置加速器和日志上限sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json/dev/nullEOF { registry-mirrors: [https://docker.xuanyuan.me], exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m, max-file: 3 } } EOFsudosystemctl daemon-reloadsudosystemctl restartdockerdockerinfo|tail-n14# 确认 Registry Mirrors 生效registry-mirrors按需替换为可达的加速地址可配置多个。2.6 免 sudo 使用 Docker可选sudousermod-aGdocker$USERnewgrpdocker# 或重新登录使组生效dockerrun--rmhello-world三、Docker Compose 部署二选一Docker Compose 用于通过 YAML 一次定义并管理多个容器的启动、网络、依赖关系。推荐使用v2 插件形式即docker compose子命令。3.1 方式一docker compose 插件推荐若 2.3 节已安装docker-compose-plugin则已就绪可跳过本步单独安装如下sudoaptinstall-ydocker-compose-plugindockercompose version# Docker Compose version v2.x.x3.2 方式二docker-compose 独立二进制可选当需要与旧版docker-compose脚本兼容或插件安装受限时可选用sudocurl-Lhttps://github.com/docker/compose/releases/latest/download/docker-compose-$(uname-s)-$(uname-m)-o/usr/local/bin/docker-composesudochmodx /usr/local/bin/docker-composedocker-composeversion需能访问 GitHub国内网络受限时建议使用方式一插件或配置代理。3.3 验证 Compose 可用dockercompose versiondockercomposehelp两种方式的主要差异插件版命令为docker compose有空格独立版为docker-compose。后续 Harbor 均使用docker compose插件版。四、阶段一HTTP 模式部署 Harbor4.1 获取并解压 Harbor#下载软件包官方下载可能很慢wgethttps://github.com/goharbor/harbor/releases/download/v2.15.3/harbor-offline-installer-v2.15.3.tgz百度云下载 通过网盘分享的文件harbor-offline-installer-v2.15.3.tgz 链接: https://pan.baidu.com/s/1Gw4TpDN8vdxDgc_TnnzLtQ?pwd5wp2 提取码: 5wp2 --来自百度网盘超级会员v6的分享创建目录上传软件包mkdir-p/data/softs /data/server/# 将 harbor-offline-installer-v2.15.3.tgz 上传到 /data/softsls/data/softs/# 准备主机名解析与客户端保持一致echo192.168.1.70 harbor-study.com/etc/hosts# 解压到部署目录cd/data/softs/tarxf harbor-offline-installer-v2.15.3.tgz-C/data/server/ls/data/server/harbor/# common.sh harbor.v2.15.3.tar.gz harbor.yml.tmpl install.sh LICENSE prepare解压后关键文件文件作用harbor.yml.tmpl配置文件模板需复制为harbor.yml后修改install.sh一键安装脚本调用 prepare 并启动全部组件prepare预处理脚本校验配置、生成证书与 Compose 模板harbor.v2.15.3.tar.gzHarbor 所有组件镜像安装包可从 Harbor 官网下载https://goharbor.io/docs/2.14.0/install-config/4.2 配置 harbor.ymlHTTP 模式cd/data/server/harbor/cpharbor.yml.tmpl harbor.ymlvimharbor.yml关键修改项hostname:192.168.1.70# 改为 IP 或主机名http:port:80禁用 https 功能保持注释状态# https:# port: 443# certificate: /your/certificate/path# private_key: /your/private/key/path修改数据目录和管理员密码harbor_admin_password:123456# 修改为强密码data_volume:/data/server/harbor/data# 修改数据目录若自定义网段与现有网络冲突可调整 Compose 子网一般无需操作networks:harbor:ipam:driver:defaultconfig:-subnet:172.27.0.0/164.3 预导入镜像并安装可选功能参数./install.sh参数功能--with-trivy镜像漏洞扫描--with-chartmuseumHelm Chart 仓库--with-notary镜像签名验证cd/data/server/harbor/# 提前导入镜像以节省时间dockerloadharbor.v2.15.3.tar.gzdockerimages|grepharbor# 每次修改 harbor.yml 后都必须重新 ./prepareHTTP 模式会提示 HTTPS不影响使用./prepare ./install.sh确认所有组件启动dockercomposeps# 期望harbor-core、harbor-db、harbor-jobservice、harbor-log、harbor-portal、nginx、redis、registry、registryctl#输出示例rootharbor70:/data/server/harbor# docker compose psNAME IMAGE COMMAND SERVICE CREATED STATUS PORTS harbor-core goharbor/harbor-core:v2.15.3/harbor/entrypoint.…core12seconds ago Up11seconds(health: starting)harbor-db goharbor/harbor-db:v2.15.3/docker-entrypoint.…postgresql13seconds ago Up12seconds(health: starting)harbor-jobservice goharbor/harbor-jobservice:v2.15.3/harbor/entrypoint.…jobservice12seconds ago Up7seconds(health: starting)harbor-log goharbor/harbor-log:v2.15.3/bin/sh -c /usr/loc…log13seconds ago Up12seconds(health: starting)127.0.0.1:1514-10514/tcp harbor-portal goharbor/harbor-portal:v2.15.3nginx -g daemon of…portal13seconds ago Up12seconds(health: starting)nginx goharbor/nginx-photon:v2.15.3nginx -g daemon of…proxy12seconds ago Up11seconds(health: starting)0.0.0.0:80-8080/tcp,[::]:80-8080/tcp redis goharbor/valkey-photon:v2.15.3valkey-server /etc/…redis13seconds ago Up12seconds(health: starting)registry goharbor/registry-photon:v2.15.3/home/harbor/entryp…registry13seconds ago Up12seconds(health: starting)registryctl goharbor/harbor-registryctl:v2.15.3/home/harbor/start.…registryctl13seconds ago Up12seconds(health: starting)4.4 注册为 systemd 服务开机自启cd/data/server/harbor/dockercompose downcat/lib/systemd/system/harbor.serviceEOF [Unit] DescriptionHarbor Afterdocker.service systemd-networkd.service systemd-resolved.service Requiresdocker.service Documentationhttp://github.com/vmware/harbor [Service] Typesimple Restarton-failure RestartSec5 # 注意ExecStart / ExecStop 需指向 Harbor 实际安装位置 ExecStart/usr/bin/docker compose --file /data/server/harbor/docker-compose.yml up ExecStop/usr/bin/docker compose --file /data/server/harbor/docker-compose.yml down [Install] WantedBymulti-user.target EOF重启harborsystemctl daemon-reload systemctl start harbor systemctl is-active harbornetstat-tnulp|grepdocker若 docker 命令路径不同用which docker确认后替换ExecStart中的/usr/bin/docker。4.5 登录 Harbor 界面修改Windows 侧可定制访问域名写入 hosts文件路径C:\Windows\System32\drivers\etc\hosts192.168.1.70 harbor-study.com浏览器访问http://192.168.1.70或域名默认账号admin/ 密码123456。用户角色说明项目管理员可建删项目 维护人员可传删镜像、不可删项目 开发者可上传、不可删镜像 访客不可上传。创建用户新建项目添加成员到项目最少要开发者级别才能上传镜像4.6 HTTP 模式下让 Docker 客户端访问仓库Docker 默认走 HTTPS需将 Harbor 加入insecure-registries推荐daemon.json方式cat/etc/docker/daemon.jsonEOF { registry-mirrors: [https://docker.xuanyuan.me], insecure-registries: [192.168.1.70:80] } EOFsystemctl restart docker.servicedockerinfo# 确认 Insecure Registries 已生效不推荐docker.service方式在 ExecStart 追加--insecure-registry维护不便。4.7 HTTP 登录、推送与拉取验证登录注意直接用 IP 或http://前缀都会让 Docker 走 443 而失败必须显式指定:80端口# 以下两种会报 connection refused默认走 https:443dockerlogin192.168.1.70dockerlogin http://192.168.1.70# 正确显式指定 80 端口走 HTTPdockerlogin192.168.1.70:80# Username: harbor# Password:# Login Succeeded正确输出示例rootharbor70:/data/server/harbor# docker login 192.168.1.70:80Username: yunwei Password: WARNING!Your credentials are stored unencryptedin/root/.docker/config.json.Configure a credential helper to remove this warning. See https://docs.docker.com/go/credential-store/ Login Succeeded退出仓库dockerlogout192.168.1.70:80测试镜像上传镜像名必须符合仓库地址/项目名/镜像名:版本#从官方拉一个测试镜像dockerpull alpine#先登录harbor才能推送dockerlogin192.168.1.70:80#打仓库harbor项目tagdockertag alpine:latest192.168.1.70:80/harbor/alpine:v1#推送镜像到harbor项目dockerpush192.168.1.70:80/harbor/alpine:v1镜像拉取验证dockerrmi192.168.1.70:80/harbor/alpine:v1 alpinedockerpull192.168.1.70:80/harbor/alpine:v1登录仓库也能看到harbor项目已有镜像下载次数为1五、阶段二HTTPS 改造5.1 改造思路核心替换访问协议 配置 SSL 证书 让所有依赖组件Docker 客户端等适配 HTTPS。改造前准备可选停服、备份配置、记录数据路径准备 SSL 证书生产用可信 CA 证书测试用自签名证书Harbor 改造修改harbor.yml启用 HTTPS →./prepare→ 重启客户端适配在所有访问 Harbor 的主机信任证书本项目是测试所以用自签名证书# 改造前准备可选推荐cd/data/server/harbor/dockercompose downcpharbor.yml harbor.yml.http.bak# 备份避免配置丢失# 记录 data_volume 路径确保数据不丢失5.2 准备 SSL 证书需包含公钥.crt / .pem与私钥.key建议存放于/data/server/harbor/certs与数据目录分离。参考https://goharbor.io/docs/2.14.0/install-config/configure-https/5.2.1 生成 CA 自签名证书mkdir-p/data/server/harbor/certscd/data/server/harbor/certs# 生成 CA 私钥openssl genrsa-outca.key4096# 生成 CA 自签名证书(CN是证书颁发机构CA本身的名字)openssl req-x509-new-nodes-sha512-days3650\-subj/CCN/STGuangdong/LGuangzhou/Oexample/OUPersonal/CNca.harbor-study.com\-keyca.key\-outca.crt5.2.2 生成 Harbor 主机私钥与证书申请证书申请中的CN 必须是访问 Harbor 的主机域名# 生成 Harbor 主机私钥openssl genrsa-outharbor-study.com.key4096# 生成证书申请CSRopenssl req-sha512-new\-subj/CCN/STGuangdong/LGuangzhou/Oexample/OUPersonal/CNharbor-study.com\-keyharbor-study.com.key\-outharbor-study.com.csr5.2.3 创建 x509 v3 扩展文件SAN新版必须若不配置 SAN后续docker login会报x509: certificate relies on legacy Common Name field, use SANs ...。catv3.extEOF authorityKeyIdentifierkeyid,issuer basicConstraintsCA:FALSE keyUsage digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage serverAuth subjectAltName alt_names [alt_names] DNS.1 harbor-study.com DNS.2 ca.harbor-study.com IP.1 192.168.1.70 EOFDNS.1必须存在且与主机域名一致DNS.2/DNS.3可选。5.2.4 用 CA 为 Harbor 主机颁发证书openssl x509-req-sha512-days3650\-extfilev3.ext\-CAca.crt-CAkeyca.key-CAcreateserial\-inharbor-study.com.csr\-outharbor-study.com.crt# 确认证书内容openssl x509-inharbor-study.com.crt-noout-text最终目录文件ls/data/server/harbor/certs/# ca.crt ca.key ca.srl harbor-study.com.crt harbor-study.com.csr harbor-study.com.key v3.ext5.3 修改 harbor.yml 启用 HTTPSecho192.168.1.70 harbor-study.com/etc/hostscd/data/server/harbor/cpharbor.yml{,bak-http}# 备份 HTTP 配置vimharbor.ymlhostname:harbor-study.com# 改为域名方式https:port:443certificate:/data/server/harbor/certs/harbor-study.com.crt# 路径必须正确private_key:/data/server/harbor/certs/harbor-study.com.key# 路径必须正确# HTTP 段可按需保留HTTP/HTTPS 并存时默认走 HTTPS或注释禁用#http:# port: 805.4 应用配置并重启cd/data/server/harbor/ ./prepare# 生成 HTTPS 所需组件配置systemctl restart harbor.service# 若未注册 systemd 服务可docker compose down ./install.shharbor启动完成后浏览器访问https://harbor-study.com自签名证书首次会提示不安全点「高级 → 继续访问」即可仅测试环境。确保服务器防火墙已关闭确保电脑的hosts文件有域名指向5.5 服务端 Docker 客户端适配HTTPS 信任5.5.1 转换证书格式Docker 约定.crt为 CA 证书、.cert为客户端证书cd/data/server/harbor/certs/ openssl x509-informPEM-inharbor-study.com.crt-outharbor-study.com.cert# 验证两者内容一致md5sum harbor-study.com.crt harbor-study.com.cert5.5.2 创建同名目录并放置证书mkdir-pv/etc/docker/certs.d/harbor-study.com/# 若使用 containerd 运行时mkdir-pv/etc/containerd/certs.d/harbor-study.com/# 三个文件都要cert、key、ca.crtcpharbor-study.com.cert harbor-study.com.key ca.crt\/etc/docker/certs.d/harbor-study.com/网上部分博客称只拷 cert 即可实测无法运行会报missing key harbor-study.com.key for client certificate ...。5.5.3 移除 insecure-registriescat/etc/docker/daemon.jsonEOF { registry-mirrors: [https://docker.xuanyuan.me], insecure-registries: [] } EOFsystemctl restart docker.service5.5.4 验证 HTTPS 登录dockerlogout192.168.1.70:80# 先退出旧的 HTTP 登录dockerlogin harbor-study.com#Username: admin#Password:#WARNING! Your credentials are stored unencrypted in /root/.docker/config.json.#Configure a credential helper to remove this warning. See#https://docs.docker.com/go/credential-store/#Login Succeededcat~/.docker/config.json# 确认认证记录5.6 其他客户端适配在目标客户端主机执行mkdir-pv/etc/docker/certs.d/harbor-study.com/从 Harbor 主机分发证书到客户端# 在 Harbor 主机执行cd/data/server/harbor/certs/scpharbor-study.com.cert harbor-study.com.key ca.crt\root10.0.0.16:/etc/docker/certs.d/harbor-study.com/清理客户端无效配置并重启# 在客户端 10.0.0.16 执行cat/etc/docker/daemon.jsonEOF { registry-mirrors: [https://docker.xuanyuan.me, https://82ue03hk.mirror.aliyuncs.com], insecure-registries: [], experimental: true } EOFsystemctl restart docker.service定制主机名解析并登录使用echo192.168.1.70 harbor-study.com/etc/hostsdockerlogin harbor-study.comdockertag alpine harbor-study.com/harbor/alpine:v2dockerpush harbor-study.com/harbor/alpine:v2dockerrmi harbor-study.com/harbor/alpine:v2dockerpull harbor-study.com/harbor/alpine:v2六、常见问题与排错现象原因解决方法docker login ip报 connection refusedDocker 默认走 443HTTP 仓库未带端口HTTP 模式必须docker login ip:80x509: certificate relies on legacy Common Name field证书未配置 SANv3.ext按 5.2.3 重建含subjectAltName的证书并重新签发tls: handshake failure客户端未信任或缺少证书在/etc/docker/certs.d/域名/放入 cert/key/ca.crt 并重启 Dockermissing key 域名.key for client certificate只拷了 cert 未拷 keycert/key/ca.crt 三个文件一起拷贝修改 harbor.yml 后未生效未执行./prepare每次改配置后必须./prepare再重启证书路径错误导致启动失败harbor.yml 中 certificate / private_key 路径不正确核对实际路径建议使用绝对路径七、参考资料Docker 官方安装文档Ubuntuhttps://docs.docker.com/engine/install/ubuntu/Docker Compose 文档https://docs.docker.com/compose/Harbor 官方文档https://goharbor.io/docs/Harbor HTTPS 配置指南https://goharbor.io/docs/2.14.0/install-config/configure-https/Harbor 安装前置要求https://goharbor.io/docs/2.14.0/install-config/installation-prereqs/Harbor GitHubhttps://github.com/goharbor/harbor
RELATED

相关推荐

3D 模型压完还要转 GLB 再压贴图?不到 10 MB 的工具里切页签

3D 模型压完还要转 GLB 再压贴图?不到 10 MB 的工具里切页签

干 3D 模型这活,两种干法摆得很清楚:一种是压完导出、开下一个软件导入、再导出、再导入,几个软件之间来回倒文件;另一种是找一个把压缩、转格式、压贴图都收进去的工具,在同一套界面里切页签。我后来选了后者&#xf…

📅 2026/10/22 7:37:14
安徽网站定制开发公司选择指南:同样说能做开发费用该怎么比较

安徽网站定制开发公司选择指南:同样说能做开发费用该怎么比较

只是把首页颜色和图片换了,算不算定制?现成后台本来就能发产品,为什么报价又列一项产品管理开发费?找安徽定制网站开发公司,这两件事值得先弄明白。定制费应该付给确实需要另外设计、修改和开发的工作,不能…

📅 2026/10/22 7:32:13
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java

LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java

一,水果成篮题目解析:这题的意思就是说有一个数组,里面数字就代表一个种类,就如fruits [1,2,1]里面就有1水果和2水果这两种水果,现在我有两个篮筐,并且每个篮筐只能有一个种类的水果,并且数量可…

📅 2026/10/22 7:32:13
MORE NEWS

更多资讯

📰

EFI程序替代版本更换指南:从原理到实操避坑手册

看到“EFI程序”这四个字,很多人第一反应是刷BIOS时看到的那个黑色命令行界面,也有人会以为是固态硬盘里那个不带盘符的隐藏分区。其实它泛指一切在UEFI引导环境下运行的可执行文件,包括启动管理器、固件更新工具、驱动程序,甚至像…

📰

Linux kill命令本质:信号机制与进程优雅终止原理

1. 为什么你总在 kill 命令上栽跟头?——一个运维老手的十年血泪总结 “kill -9 进程号”这行命令,我第一次敲出来是在大学实验室的 Linux 终端里,当时以为自己掌握了系统控制权。结果三分钟后,整个测试环境的服务全挂了——不是因…

📰

SkillsBench实战:从16%技能调用成功率提升看Agent评测与优化

有段时间我被一个现象搞得很头疼:智能体(Agent)在演示环境里表现无懈可击,一丢进生产环境就间歇性抽风。用户问一句“帮我订个明天下午两点的会议室”,它能正确理解意图,却在调用会议室预订技能时把日期参数…

📰

Spring Boot整合Spark on Yarn的工程化实践与避坑指南

1. 为什么非得把 Spring Boot 和 Spark on Yarn 拼在一起? 我第一次接到这个需求时,心里是打问号的:一个轻量级 Web 框架,一个重型分布式计算引擎,中间还隔着 Yarn 这个资源调度层——这组合听起来像让咖啡机去调度高铁…

📰

C#接入大模型生产化:网关、重试与成本控制实战

上周帮一个朋友看他的C# AI项目,他在周末用一天时间把一个大模型Demo跑通了:控制台里敲一句话,回车,模型乖乖吐出结构化JSON,他兴奋地给我看效果。但我翻了翻代码,问他三个问题——并发50时会不会把限流打穿…

📰

LangSmith实战:用可观测性拆解Agent黑箱

先说个我真实踩过的坑。某开发者把一个带工具调用的Agent丢到测试环境,第一次问“某个客户的账为什么对不上”,Agent调用财务接口查到一笔异常,紧接着又自作主张调了订单接口、还调了库存接口,最后基于三个接口的数据“推断”出一…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬