<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>容器镜像 on 维克的博客</title><link>https://blogs.wuvikr.top/tags/%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F/</link><description>Recent content in 容器镜像 on 维克的博客</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 26 Oct 2026 10:41:08 +0800</lastBuildDate><atom:link href="https://blogs.wuvikr.top/tags/%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F/index.xml" rel="self" type="application/rss+xml"/><item><title>Trivy 使用笔记：从安装到生产实践</title><link>https://blogs.wuvikr.top/posts/trivy%E4%BD%BF%E7%94%A8%E7%AC%94%E8%AE%B0/</link><pubDate>Mon, 26 Oct 2026 10:41:08 +0800</pubDate><guid>https://blogs.wuvikr.top/posts/trivy%E4%BD%BF%E7%94%A8%E7%AC%94%E8%AE%B0/</guid><description>&lt;h1 id="1-trivy-是什么">1. Trivy 是什么&lt;/h1>
&lt;ul>
&lt;li>&lt;strong>官方网站：&lt;/strong> &lt;a href="https://trivy.dev/">https://trivy.dev/&lt;/a>&lt;/li>
&lt;li>&lt;strong>开源仓库：&lt;/strong> &lt;a href="https://github.com/aquasecurity/trivy">https://github.com/aquasecurity/trivy&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Trivy&lt;/strong>（读作 “tri-vee”）是由 &lt;strong>Aqua Security&lt;/strong> 主导开发并开源的&lt;a href="https://trivy.dev/">统一安全扫描工具&lt;/a>，名称取自 “Trigger”，寓意快速触发安全检查。它面向整个软件供应链，可用于扫描：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>容器镜像与文件系统&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Git 仓库与依赖项&lt;/strong>&lt;/li>
&lt;li>&lt;strong>IaC 配置&lt;/strong>，如 Dockerfile、Terraform 和 Kubernetes 清单&lt;/li>
&lt;li>&lt;strong>SBOM&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Kubernetes 集群及资源&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>借助统一的命令行入口，Trivy 能够发现：&lt;/p>
&lt;ul>
&lt;li>操作系统及应用依赖中的已知漏洞（CVE）&lt;/li>
&lt;li>容器、Kubernetes 和 IaC 配置错误&lt;/li>
&lt;li>硬编码密码、令牌等泄露密钥&lt;/li>
&lt;li>依赖项的许可证合规风险&lt;/li>
&lt;/ul>
&lt;p>Trivy 的优势在于将多种安全检查整合到一套工具中，并可轻松接入 CI/CD、DevSecOps 和 Kubernetes 等工作流，以结构化报告输出扫描结果。这样无需为不同类型的安全风险维护多套独立工具，就能在代码构建、制品发布和部署运行等阶段持续开展安全检查。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>trivy &amp;lt;扫描目标&amp;gt; ─► 镜像 / 文件系统 / Git / IaC / SBOM / K8s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ─► 漏洞 + 配置错误 + 密钥 + 许可证风险报告
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="2-为什么我们需要它">2. 为什么我们需要它&lt;/h1>
&lt;h2 id="21-供应链安全是真实风险">2.1 供应链安全是真实风险&lt;/h2>
&lt;p>服务的容器镜像不是凭空造的，它由一层层基础镜像 + 一堆依赖库叠加而成。任何一个基础镜像里的老漏洞（比如某个 glibc 漏洞）、任何一个 &lt;code>npm install&lt;/code> 下来的依赖带 CVE，都会&lt;strong>原封不动带进生产环境&lt;/strong>。&lt;/p></description></item><item><title>Kaniko 从入门到实践</title><link>https://blogs.wuvikr.top/posts/kaniko%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E5%AE%9E%E8%B7%B5/</link><pubDate>Sat, 24 Oct 2026 11:28:31 +0800</pubDate><guid>https://blogs.wuvikr.top/posts/kaniko%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E5%AE%9E%E8%B7%B5/</guid><description>&lt;h1 id="1-kaniko-是什么">1. Kaniko 是什么&lt;/h1>
&lt;p>&lt;strong>Kaniko&lt;/strong> 是一个由 Google 开源的，在&lt;strong>容器或 Kubernetes 集群内部&lt;/strong>，直接根据 Dockerfile 构建容器镜像的工具。&lt;/p>
&lt;p>它最核心的特点只有一个：&lt;strong>不依赖 Docker daemon（守护进程）&lt;/strong>，所有构建动作都在用户态（userspace）完成。这意味着你不需要在集群里跑一个 Docker 服务，也不需要挂载 &lt;code>/var/run/docker.sock&lt;/code>，就可以构建出标准镜像。&lt;/p>
&lt;h1 id="2-kaniko-解决了什么问题">2. Kaniko 解决了什么问题&lt;/h1>
&lt;p>在 Kaniko 出现之前，CI 里构建镜像的主流做法是 &lt;strong>Docker-in-Docker（DinD）&lt;/strong>。即在 CI Job 里再起一个 Docker 守护进程，用它去 build。这套方案在 Kubernetes 集群里有两个致命痛点：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>需要 privileged 特权模式&lt;/strong>：dind 服务容器要操控内核特性，必须给 Pod 开 &lt;code>privileged: true&lt;/code>。这是很严重的安全隐患——容器可能逃逸到宿主机，很多安全策略严格的集群直接禁止。&lt;/li>
&lt;li>&lt;strong>性能差&lt;/strong>：每个 Job 都额外拉起一个完整 Docker daemon，启动慢、占用高，多任务并发时更是灾难。&lt;/li>
&lt;/ol>
&lt;p>Kaniko 就是为了解决这个问题而生的：&lt;strong>不用特权、不用 daemon，在标准 K8s 集群里就能安全构建镜像。&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>问题&lt;/th>
&lt;th>DinD（旧方案）&lt;/th>
&lt;th>Kaniko&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>需要 privileged 特权&lt;/td>
&lt;td>✅ 必须&lt;/td>
&lt;td>❌ 不需要&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>依赖 Docker daemon&lt;/td>
&lt;td>✅ 必须&lt;/td>
&lt;td>❌ 完全不需要&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>挂载 docker.sock&lt;/td>
&lt;td>✅ 需要&lt;/td>
&lt;td>❌ 不需要&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>安全性&lt;/td>
&lt;td>有容器逃逸风险&lt;/td>
&lt;td>纯用户态，安全&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>性能开销&lt;/td>
&lt;td>每个 Job 起 daemon，慢&lt;/td>
&lt;td>轻量，快&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Kaniko 的核心价值用一句话来说就是：&lt;strong>在不安全、不方便跑 Docker daemon 的环境（尤其是 K8s 集群）里，仍然能安全、快速地构建镜像。&lt;/strong>&lt;/p></description></item><item><title>Harbor 私有镜像仓库安装部署和最佳实践</title><link>https://blogs.wuvikr.top/posts/harbor%E7%A7%81%E6%9C%89%E9%95%9C%E5%83%8F%E4%BB%93%E5%BA%93%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E5%92%8C%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/</link><pubDate>Sat, 03 Oct 2026 11:32:44 +0800</pubDate><guid>https://blogs.wuvikr.top/posts/harbor%E7%A7%81%E6%9C%89%E9%95%9C%E5%83%8F%E4%BB%93%E5%BA%93%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E5%92%8C%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/</guid><description>&lt;h1 id="1-简介">1. 简介&lt;/h1>
&lt;p>Harbor 是 CNCF 托管、VMware 开源的企业级容器镜像仓库，基于 Docker Registry 二次开发。除基础镜像存储能力外，还提供 Web UI、细粒度RBAC权限、镜像漏洞扫描、垃圾回收、镜像复制同步、审计日志等企业级能力，是 Kubernetes 集群离线部署、容器镜像统一管理的核心组件。&lt;/p>
&lt;p>&lt;strong>适用场景&lt;/strong>：企业内网私有镜像托管、Kubespray 离线集群镜像分发、CI/CD流水线镜像仓库。&lt;/p>
&lt;p>&lt;strong>官方参考文档&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>Harbor 官方安装指南：&lt;a href="https://goharbor.io/docs/2.8.0/install-config/">https://goharbor.io/docs/2.8.0/install-config/&lt;/a>&lt;/li>
&lt;li>Harbor HTTPS 证书配置文档：&lt;a href="https://goharbor.io/docs/main/install-config/configure-https/">https://goharbor.io/docs/main/install-config/configure-https/&lt;/a>&lt;/li>
&lt;li>Harbor 版本生命周期与版本策略：&lt;a href="https://goharbor.io/docs/main/install-config/versioning/">https://goharbor.io/docs/main/install-config/versioning/&lt;/a>&lt;/li>
&lt;li>Harbor 备份恢复官方文档：&lt;a href="https://goharbor.io/docs/main/administration/backup-restore/">https://goharbor.io/docs/main/administration/backup-restore/&lt;/a>&lt;/li>
&lt;li>Harbor 生产环境最佳实践：&lt;a href="https://www.cncf.io/blog/2026/02/24/making-harbor-production-ready-essential-considerations-for-deployment/">https://www.cncf.io/blog/2026/02/24/making-harbor-production-ready-essential-considerations-for-deployment/&lt;/a>&lt;/li>
&lt;li>Harbor 官方 Trivy 文档：https://goharbor.io/docs/2.14.0/scan/&lt;/li>
&lt;li>Trivy 官方文档：&lt;a href="https://aquasecurity.github.io/trivy/">https://aquasecurity.github.io/trivy/&lt;/a>&lt;/li>
&lt;/ul>
&lt;h1 id="2-前置环境准备">2. 前置环境准备&lt;/h1>
&lt;h2 id="21-harbor版本选型指南">2.1 Harbor版本选型指南&lt;/h2>
&lt;p>当前最新版已经到 v2.15.x，很多人会直接选用最新版，但&lt;strong>不建议生产直接上最新大版本&lt;/strong>。&lt;/p>
&lt;p>Harbor版本命名规则：&lt;code>主版本.次版本.补丁号&lt;/code>，例如 &lt;code>2.10.2&lt;/code>、&lt;code>2.15.0&lt;/code>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>奇数小版本（2.11、2.13、2.15）&lt;/strong>：新特性版本，引入新功能、重构模块；bug相对多，适合测试体验，&lt;strong>不推荐生产直接使用&lt;/strong>。&lt;/li>
&lt;li>&lt;strong>偶数小版本（2.10、2.12、2.14）&lt;/strong>：长期维护稳定分支，重点修复漏洞，新增功能保守，&lt;strong>生产首选&lt;/strong>。&lt;/li>
&lt;/ul>
&lt;p>举例：&lt;/p>
&lt;ul>
&lt;li>&lt;code>v2.15.x&lt;/code>：新特性版，适合尝鲜、学习测试；&lt;/li>
&lt;li>&lt;code>v2.14.x&lt;/code>：当前最新稳定偶数版；&lt;/li>
&lt;li>&lt;code>v2.10.x&lt;/code>：久经大规模生产验证，bug少，社区问题资料极多，如果不需要新版本的一些新特性的话，推荐使用。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>企业生产环境&lt;/strong>：优先选择&lt;strong>偶数LTS稳定分支&lt;/strong>，发布至少3个月以上，积累足够补丁。不要选用刚发布的 &lt;code>.0&lt;/code> 首版（例如 &lt;code>2.15.0&lt;/code>），这类版本会存在较多未发现的bug。&lt;/p>
&lt;h2 id="22-基础依赖">2.2 基础依赖&lt;/h2>
&lt;p>Harbor 基于 Docker Compose V2 编排运行，提前准备依赖环境：&lt;/p>
&lt;ul>
&lt;li>Docker Engine：20.10+&lt;/li>
&lt;li>Docker Compose V2&lt;/li>
&lt;li>系统架构：amd64 / arm64 均可支持（OrbStack、VMware虚拟机均可正常运行）&lt;/li>
&lt;li>硬件资源：测试环境≥2核4G；生产环境≥4核8G，推荐SSD存储提升镜像读写性能&lt;/li>
&lt;/ul>
&lt;h1 id="3-harbor-离线安装流程">3. Harbor 离线安装流程&lt;/h1>
&lt;p>离线包稳定性高于在线安装，内网、离线集群优先选用。本文部署以&lt;code>v2.14.4&lt;/code>版本为例。&lt;/p></description></item></channel></rss>