Files
macos-tools/harbor/EXAMPLES.md
2025-12-24 13:42:39 +08:00

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
# ✓ 成功

📊 工作原理

  1. 首次拉取:

    docker pull 192.168.1.83:8080/dockerhub/nginx:latest
    
    • Harbor 检查本地缓存(未找到)
    • 从 Docker Hub 拉取镜像
    • 缓存到 Harbor
    • 返回给客户端
  2. 后续拉取:

    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 倍! 🚀

💡 最佳实践

  1. 开发环境: 统一使用 Harbor 代理,提高镜像拉取速度
  2. CI/CD: 配置 Harbor 作为镜像源,减少构建时间
  3. 定期清理: 清理不再使用的缓存镜像,节省存储空间
  4. 监控使用: 通过 Harbor Web UI 查看缓存命中率

🔗 相关链接