4.2 KiB
4.2 KiB
Harbor 代理缓存使用示例
✅ 测试验证
以下镜像已成功测试并可用:
# ✓ Docker Hub - nginx
docker pull 192.168.1.83:8080/dockerhub/nginx:latest
# ✓ K8s Registry - pause
docker pull 192.168.1.83:8080/k8s-registry/pause:3.9
📝 镜像路径格式说明
Harbor 代理缓存的路径格式:
harbor-host/项目名/镜像路径:标签
Docker Hub 镜像
官方镜像(推荐格式):
# 原始路径: docker.io/library/nginx:latest
# Harbor 路径:
docker pull 192.168.1.83:8080/dockerhub/nginx:latest
# 或显式指定 library/
docker pull 192.168.1.83:8080/dockerhub/library/nginx:latest
更多官方镜像示例:
docker pull 192.168.1.83:8080/dockerhub/python:3.10-slim
docker pull 192.168.1.83:8080/dockerhub/alpine:latest
docker pull 192.168.1.83:8080/dockerhub/redis:7-alpine
docker pull 192.168.1.83:8080/dockerhub/postgres:15
docker pull 192.168.1.83:8080/dockerhub/mysql:8.0
用户/组织镜像:
# 原始路径: docker.io/bitnami/redis:latest
# Harbor 路径:
docker pull 192.168.1.83:8080/dockerhub/bitnami/redis:latest
# 更多示例
docker pull 192.168.1.83:8080/dockerhub/bitnami/postgresql:latest
docker pull 192.168.1.83:8080/dockerhub/confluentinc/cp-kafka:latest
K8s Registry 镜像
# 原始路径: registry.k8s.io/pause:3.9
# Harbor 路径:
docker pull 192.168.1.83:8080/k8s-registry/pause:3.9
# 更多 K8s 镜像
docker pull 192.168.1.83:8080/k8s-registry/coredns/coredns:v1.10.1
docker pull 192.168.1.83:8080/k8s-registry/kube-apiserver:v1.28.0
GitHub Container Registry (GHCR)
# 原始路径: ghcr.io/actions/runner:latest
# Harbor 路径:
docker pull 192.168.1.83:8080/ghcr/actions/runner:latest
# 更多 GHCR 镜像
docker pull 192.168.1.83:8080/ghcr/actions/runner-controller:latest
Quay.io 镜像
# 原始路径: quay.io/prometheus/prometheus:latest
# Harbor 路径:
docker pull 192.168.1.83:8080/quay/prometheus/prometheus:latest
# 更多 Quay 镜像
docker pull 192.168.1.83:8080/quay/coreos/flannel:latest
docker pull 192.168.1.83:8080/quay/jetstack/cert-manager-controller:latest
🔄 常见错误和解决方案
❌ 错误格式
# 错误: 多余的 library/
docker pull 192.168.1.83:8080/dockerhub/library/nginx:latest
# repository dockerhub/library/nginx not found
✅ 正确格式
# 正确: 直接使用镜像名
docker pull 192.168.1.83:8080/dockerhub/nginx:latest
# ✓ 成功
📊 工作原理
-
首次拉取:
docker pull 192.168.1.83:8080/dockerhub/nginx:latest- Harbor 检查本地缓存(未找到)
- 从 Docker Hub 拉取镜像
- 缓存到 Harbor
- 返回给客户端
-
后续拉取:
docker pull 192.168.1.83:8080/dockerhub/nginx:latest- Harbor 检查本地缓存(找到)
- 直接从缓存返回(快速!)
🌐 在 Kubernetes 中使用
Pod 定义示例
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: 192.168.1.83:8080/dockerhub/nginx:latest
Deployment 示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-deployment
spec:
replicas: 3
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: 192.168.1.83:8080/dockerhub/redis:7-alpine
📈 性能对比
从 Docker Hub 直接拉取
time docker pull nginx:latest
# real 0m15.234s (首次)
从 Harbor 缓存拉取
time docker pull 192.168.1.83:8080/dockerhub/nginx:latest
# real 0m2.123s (缓存后)
速度提升约 7 倍! 🚀
💡 最佳实践
- 开发环境: 统一使用 Harbor 代理,提高镜像拉取速度
- CI/CD: 配置 Harbor 作为镜像源,减少构建时间
- 定期清理: 清理不再使用的缓存镜像,节省存储空间
- 监控使用: 通过 Harbor Web UI 查看缓存命中率