7.3 KiB
7.3 KiB
ARM 镜像预拉取指南
策略:先在欧洲 Harbor 服务器预拉取 ARM 镜像,再从本地拉取 优势:欧洲 Harbor 网络好 + 本地拉取已缓存的镜像速度快
📋 执行步骤
步骤 1: 在欧洲 Harbor 服务器上预拉取镜像
登录欧洲 Harbor 服务器:
ssh [email protected]
# 或者您的欧洲 Harbor 服务器地址
执行预拉取命令:
# 拉取 Trivy 扫描器镜像(ARM64 平台)
docker pull --platform linux/arm64 aquasec/trivy:0.66.0
# 或者通过 Harbor 的 dockerhub-proxy(推荐)
docker pull --platform linux/arm64 harbor.eu.lingjingwanxiang.cn/dockerhub-proxy/aquasec/trivy:0.66.0
# 如果还需要其他版本
docker pull --platform linux/arm64 aquasec/trivy:0.50.0
或者使用自动化脚本:
# 1. 复制脚本到欧洲 Harbor 服务器
scp /Users/brunogao/work/codes/tools/macos/k8s/eu-harbor-prefetch-arm-images.sh \
[email protected]:/tmp/
# 2. 在欧洲 Harbor 服务器上执行
ssh [email protected]
chmod +x /tmp/eu-harbor-prefetch-arm-images.sh
/tmp/eu-harbor-prefetch-arm-images.sh
预期输出:
=== 🇪🇺 欧洲 Harbor ARM 镜像预拉取脚本 ===
=== 🔽 拉取: aquasec/trivy:0.66.0 (ARM64) ===
正在拉取: harbor.eu.lingjingwanxiang.cn/dockerhub-proxy/aquasec/trivy:0.66.0 --platform linux/arm64
0.66.0: Pulling from dockerhub-proxy/aquasec/trivy
6e174226ea69: Pull complete
7228ac13d00e: Pull complete
15e837b90154: Pull complete
88645a104b51: Pull complete
Digest: sha256:xxxxx
Status: Downloaded newer image for harbor.eu.lingjingwanxiang.cn/dockerhub-proxy/aquasec/trivy:0.66.0
✅ 拉取成功: aquasec/trivy:0.66.0
验证镜像架构:
# 确认镜像是 ARM64 架构
docker inspect harbor.eu.lingjingwanxiang.cn/dockerhub-proxy/aquasec/trivy:0.66.0 | grep -i arch
# 预期输出: "Architecture": "arm64"
步骤 2: 从本地拉取已缓存的镜像
在本地 Mac 上执行:
cd /Users/brunogao/work/codes/tools/macos/k8s
# 现在欧洲 Harbor 已经缓存了 ARM 镜像,拉取会很快
./cache-image.sh aquasec/trivy:0.66.0
预期效果:
- ✅ 拉取速度大幅提升(从欧洲 Harbor 缓存拉取)
- ✅ 自动推送到本地 Harbor
- ✅ 架构匹配(ARM64)
步骤 3: 更新 Trivy Operator 使用本地镜像
# 更新 Trivy Operator 配置
helm upgrade trivy-operator aqua/trivy-operator \
--namespace trivy-system \
--reuse-values \
--set trivy.image.registry=harbor.omniverseai.net \
--set trivy.image.repository=library/aquasec-trivy \
--set trivy.image.tag=0.66.0
# 验证扫描任务启动
kubectl get pods -n trivy-system
# 等待漏洞扫描完成
kubectl get vulnerabilityreports -A --watch
🚀 快速命令(单行执行)
在欧洲 Harbor 服务器上:
# 一键预拉取 ARM 镜像
docker pull --platform linux/arm64 harbor.eu.lingjingwanxiang.cn/dockerhub-proxy/aquasec/trivy:0.66.0 && \
docker pull --platform linux/arm64 harbor.eu.lingjingwanxiang.cn/dockerhub-proxy/aquasec/trivy:0.50.0 && \
echo "✅ ARM 镜像已缓存到欧洲 Harbor"
在本地 Mac 上:
# 一键拉取并部署
cd /Users/brunogao/work/codes/tools/macos/k8s && \
./cache-image.sh aquasec/trivy:0.66.0 && \
helm upgrade trivy-operator aqua/trivy-operator \
--namespace trivy-system \
--reuse-values \
--set trivy.image.registry=harbor.omniverseai.net \
--set trivy.image.repository=library/aquasec-trivy \
--set trivy.image.tag=0.66.0 && \
echo "✅ Trivy Operator 已更新,扫描任务启动中..."
🔍 故障排查
问题 1: 欧洲 Harbor 无法拉取镜像
症状:
Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded
解决方案:
# 1. 检查网络连接
curl -I https://registry-1.docker.io
# 2. 检查 Docker 配置
cat /etc/docker/daemon.json
# 3. 增加超时时间
export DOCKER_CLIENT_TIMEOUT=600
export COMPOSE_HTTP_TIMEOUT=600
# 4. 重试
docker pull --platform linux/arm64 aquasec/trivy:0.66.0
问题 2: 本地拉取仍然超时
症状:
[✗] 两个源都拉取失败(超时或网络问题)
解决方案:
# 1. 验证欧洲 Harbor 已缓存镜像
ssh [email protected] "docker images | grep trivy"
# 2. 手动测试拉取
docker pull harbor.eu.lingjingwanxiang.cn/dockerhub-proxy/aquasec/trivy:0.66.0
# 3. 如果成功,手动标记并推送
docker tag harbor.eu.lingjingwanxiang.cn/dockerhub-proxy/aquasec/trivy:0.66.0 \
harbor.omniverseai.net/library/aquasec-trivy:0.66.0
docker push harbor.omniverseai.net/library/aquasec-trivy:0.66.0
问题 3: 镜像架构不匹配
症状:
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64)
解决方案:
# 确保在欧洲 Harbor 服务器上拉取时指定了 --platform
docker pull --platform linux/arm64 aquasec/trivy:0.66.0
# 验证架构
docker inspect aquasec/trivy:0.66.0 | jq '.[0].Architecture'
# 应该输出: "arm64"
📊 预期时间
| 步骤 | 欧洲 Harbor 服务器 | 本地 Mac |
|---|---|---|
| 预拉取镜像 | 3-5 分钟 | - |
| 本地拉取 | - | 30-60 秒 ✅ |
| 推送到本地 Harbor | - | 20-30 秒 |
| 更新 Trivy Operator | - | 10 秒 |
| 总计 | 3-5 分钟 | 1-2 分钟 |
对比直接从本地拉取(超时失败):✅ 节省 95% 时间
📝 镜像清单
需要预拉取的镜像:
| 镜像 | 版本 | 平台 | 大小 | 用途 |
|---|---|---|---|---|
| aquasec/trivy-operator | 0.29.0 | arm64 | ~50MB | ✅ 已缓存 |
| aquasec/trivy | 0.66.0 | arm64 | ~500MB | ⏳ 待拉取 |
| aquasec/trivy | 0.50.0 | arm64 | ~400MB | 备选版本 |
✅ 完成验证
在欧洲 Harbor 服务器上验证:
# 查看已缓存的镜像
docker images | grep trivy
# 预期输出
# harbor.eu.../dockerhub-proxy/aquasec/trivy 0.66.0 xxxxx arm64
# harbor.eu.../dockerhub-proxy/aquasec/trivy 0.50.0 xxxxx arm64
在本地 Mac 上验证:
# 查看本地 Harbor 的镜像
docker images | grep trivy
# 预期输出
# harbor.omniverseai.net/library/aquasec-trivy-operator 0.29.0 xxxxx arm64
# harbor.omniverseai.net/library/aquasec-trivy 0.66.0 xxxxx arm64
# 查看 Trivy 扫描任务
kubectl get pods -n trivy-system
# 预期输出(扫描任务运行中)
# scan-vulnerabilityreport-xxx 0/1 Init:0/1 0 10s
# trivy-operator-xxx 1/1 Running 0 5m
🎯 下一步
完成镜像拉取后:
-
验证漏洞扫描 - 等待 5-10 分钟查看扫描结果
kubectl get vulnerabilityreports -A -
查看扫描详情 - 检查发现的漏洞
kubectl get vulnerabilityreports -A -o json | jq '.items[0].report.summary' -
创建 Grafana Dashboard - 可视化安全数据
- 导入 Trivy Dashboard
- 配置告警规则
-
定期更新镜像 - 保持扫描器最新
# 每月更新 ./cache-image.sh aquasec/trivy:latest
创建时间: 2025-12-30 23:55 策略: 欧洲 Harbor 预拉取 → 本地快速获取 状态: 等待在欧洲 Harbor 服务器执行