You need to enable JavaScript to run this app.
文档中心
镜像仓库

镜像仓库

复制全文
下载 pdf
镜像推拉
通过 Docker Hub 域名拉取 Docker Hub 镜像
复制全文
下载 pdf
通过 Docker Hub 域名拉取 Docker Hub 镜像
远端代理实例通过远端代理的缓存功能,实现就近访问的效果,有效提升跨境镜像拉取的效率。远端代理仓支持通过 Docker Hub 的原始域名 https://hub.docker.com,跨境拉取镜像。无需修改业务代码中 Docker Hub 镜像的地址。​
注意​
  • 通过 Docker Hub 的原始域名 https://hub.docker.com 拉取镜像时,需要将远端代理仓中的 OCI 制品仓库设置为 公有 类型,操作详情参见 批量修改 OCI 制品公私有类型。​
  • 通过远端代理仓拉取 Docker Hub 中 非官方镜像 时,需要为远端代理仓开启 镜像拉取鉴权,设置访问镜像所需的用户名和密码。​
  • 本文档适用于拉取运行在 VKE 集群 中的镜像。如果镜像运行在 VCI 集群(容器网络模型为 VPC-CNI),通过远端代理仓拉取镜像的方法参见 创建实例并配置远端代理仓。​
拉取方式对比​
通过 Docker Hub 原始域名拉取镜像时,无需在镜像地址前补齐访问域名, 保持业务原有的 Docker Hub 镜像地址即可,跨境加速由远端代理仓的 Docker Mirror 配置自动完成。​
​
镜像类型​
官方镜像标识​
拉取命令格式​
示例​
Docker 官方镜像​
Docker 官方镜像,具有 Docker Official Image 标识。​alt​​
docker pull [镜像名]:[版本号]​
docker pull nginx:stable-alpine3.23-perl​
非 Docker 官方镜像​
非 Docker 官方镜像,不具有 Docker Official Image 标识。​alt​​
docker pull [用户名]/[镜像名]:[版本号]​
docker pull grafana/grafana:main-ubuntu​
​
前提条件​
  • 已创建 VKE 集群,操作详情参见 创建集群。​
  • 已获取 VKE 集群所处 VPC 信息,支持在集群概览页查看。​
  • ​alt​​
操作步骤​
第一步:创建远端代理仓​
  1. 登录 镜像仓库控制台,创建远端代理仓。本步骤仅介绍与本场景相关的参数,更多参数说明请参见 创建远端代理仓。​
  • ​
    参数​
    说明​
    远端代理​
    选择远端代理仓类型。​
    • 类型:选择 Docker 。​
    • 镜像拉取鉴权:拉取 非 Docker 官方镜像 时需要开启,并填写登录目标 Docker Hub 的用户名和密码。​
    ​
  1. 在远端代理仓概览页,获取 访问域名。​
  • ​alt​​
  1. 使用标准版本远端代理仓时,需要在远端代理仓的 访问控制 > VPC 页面,添加 VKE 集群所在 VPC,确保代理和集群的网络连通。添加 VPC 的说明参见 连通本账号 VPC。​
说明​
小微版远端代理仓时默认使用同地域内网,无需单独配置。​
  • ​alt​​
第二步:添加 Docker Mirror 配置​
  1. 在 Docker 的 Deamon 文件中添加 registry-mirrors 配置,代码示例如下。[System domain name] 替换为 第一步 获取的远端代理仓访问域名。​
  • ​
    {​
    "registry-mirrors": ["https://[System domain name]"]​
    }​
    ​
  • ​alt​​
  1. 配置完成后,重启 Docker 使配置生效。​
第三步:通过 Docker Hub 域名拉取镜像​
使用 Docker Hub 原始域名拉取镜像文件,无需修改镜像地址。Docker 会通过 registry-mirrors 配置自动经远端代理仓加速拉取。示例命令如下:​
​
# docker pull [OCI artifact repository]:[Image tag]​
docker pull nginx:stable-alpine3.23-perl​
​
操作结果​
拉取成功后,您可以在远端代理仓的镜像详情页查看已拉取的镜像。​
​​​
发布应用​
支持多种方式调用远端代理仓中的镜像文件,发布应用。​
  • 方式一:通过远端代理仓域名​
  • 完成 第二步 的 Docker Mirror 配置后,在 Kubernetes 部署文件 (Deployment/Pod) 中 直接使用原始 Docker Hub 镜像地址 (例如 image: stable-alpine3.23-perl) 即可。Docker 会通过 registry mirrors 配置自动经远端代理仓加速拉取,无需手动补齐访问域名,示例代码如下。​
  • ​
    apiVersion: apps/v1​
    kind: Deployment​
    metadata:​
    name: nginx-demo​
    labels:​
    app: nginx-demo​
    spec:​
    replicas: 1​
    selector:​
    matchLabels:​
    app: nginx-demo​
    template:​
    metadata:​
    labels:​
    app: nginx-demo​
    spec:​
    containers:​
    - name: nginx​
    # 关键:image 保持原始 Docker Hub 地址不变,无需补齐代理仓访问域名。​
    # 节点已通过第二步的 registry-mirrors 配置,Docker 会自动经远端代理仓加速拉取。​
    image: nginx:stable-alpine3.23-perl​
    ports:​
    - containerPort: 80​
    ​
  • 方式二:通过 Kyverno 替换访问域名​
  • 通过 Kyverno,在部署 Kubernetes 应用时自动替换访问域名。​
  1. 安装 Kyverno。​
  1. 创建 policy。​
说明​
复制以下 YAML 后,需将其中 2 处 [System domain name] 替换为第一步获取的远端代理仓访问域名,分别位于 initContainers 和 containers 的 image 字段。​
  • ​
    apiVersion: kyverno.io/v1​
    kind: ClusterPolicy​
    metadata:​
    name: replace-image-registry-with-harbor​
    annotations:​
    policies.kyverno.io/title: Replace Image Registry With Harbor​
    pod-policies.kyverno.io/autogen-controllers: none​
    policies.kyverno.io/category: Sample​
    policies.kyverno.io/severity: medium​
    policies.kyverno.io/subject: Pod​
    kyverno.io/kyverno-version: 1.11.4​
    kyverno.io/kubernetes-version: "1.27"​
    policies.kyverno.io/description: >-​
    Some registries like Harbor offer pull-through caches for images from certain registries.​
    Images can be re-written to be pulled from the redirected registry instead of the original and​
    the registry will proxy pull the image, adding it to its internal cache.​
    The imageData context variable in this policy provides a normalized view​
    of the container image, allowing the policy to make decisions based on various ​
    "live" image details. As a result, it requires access to the source registry and the existence​
    of the target image to verify those details.​
    spec:​
    rules:​
    - name: redirect-docker​
    match:​
    any:​
    - resources:​
    kinds:​
    - Pod​
    operations:​
    - CREATE​
    - UPDATE​
    mutate:​
    foreach:​
    - list: request.object.spec.initContainers[]​
    context:​
    - name: imageData​
    imageRegistry:​
    reference: "{{ element.image }}"​
    preconditions:​
    any:​
    - key: "{{imageData.registry}}"​
    operator: Equals​
    value: index.docker.io​
    patchStrategicMerge:​
    spec:​
    initContainers:​
    - name: "{{ element.name }}"​
    image: [System domain name]/{{imageData.repository}}:{{imageData.identifier}}​
    - list: request.object.spec.containers[]​
    context:​
    - name: imageData​
    imageRegistry:​
    reference: "{{ element.image }}"​
    preconditions:​
    any:​
    - key: "{{imageData.registry}}"​
    operator: Equals​
    value: index.docker.io​
    patchStrategicMerge:​
    spec:​
    containers:​
    - name: "{{ element.name }}"​
    image: [System domain name]/{{imageData.repository}}:{{imageData.identifier}}​
    ​
  1. 使用镜像地址nginx:stable-alpine3.23-perl 发布应用。​
最近更新时间:2026.06.25 20:40:59
这个页面对您有帮助吗?
有用
有用
无用
无用