You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker 19.03.1如何拉取OCI镜像并用于容器构建?

Docker拉取OCI格式镜像并构建的解决方案

Docker 19.03.1完全支持拉取OCI格式镜像,你遇到的报错是因为默认配置下Docker daemon未开启对OCI manifest的兼容识别,以下是具体解决方法:

方法一:修改Docker Daemon配置开启OCI支持

  1. 编辑Docker daemon配置文件:
    • Linux/macOS:编辑/etc/docker/daemon.json
    • Windows/macOS(Docker Desktop):通过设置界面找到「Daemon」选项卡,进入高级配置
  2. 添加以下配置内容:
    {
      "experimental": true,
      "accept-oci-manifests": true
    }
    
  3. 重启Docker daemon:
    # Linux
    sudo systemctl restart docker
    # macOS(终端)
    killall Docker && open /Applications/Docker.app
    # Windows(PowerShell)
    Restart-Service Docker
    
  4. 重新尝试拉取镜像:
    docker pull <my-company-registry>/.../envoyproxy/envoy:1.25.1
    

方法二:使用Skopeo转换镜像格式

如果无法修改Docker daemon配置,可通过Skopeo将OCI格式镜像转换为Docker V2格式:

  1. 安装Skopeo(根据系统选择安装方式):
    # Ubuntu/Debian
    sudo apt update && sudo apt install skopeo
    # CentOS/RHEL
    sudo yum install skopeo
    
  2. 转换并拉取到本地Docker:
    skopeo copy docker://<my-company-registry>/.../envoyproxy/envoy:1.25.1 docker-daemon:<my-company-registry>/.../envoyproxy/envoy:1.25.1
    
    或者转换后推回私有仓库:
    skopeo copy docker://<my-company-registry>/.../envoyproxy/envoy:1.25.1 docker://<my-company-registry>/.../envoyproxy/envoy:1.25.1-docker --format v2s2
    

方法三:启用BuildKit构建(推荐)

Docker 19.03原生支持BuildKit,它对OCI格式镜像的兼容性更好:

  1. 临时启用BuildKit构建新镜像:
    DOCKER_BUILDKIT=1 docker build -t your-custom-envoy-image .
    
  2. 永久启用BuildKit:
    编辑/etc/docker/daemon.json添加:
    {
      "features": {
        "buildkit": true
      }
    }
    
    重启Docker后,后续构建默认使用BuildKit,可直接基于OCI镜像进行构建。

补充说明

Kubernetes集群能正常运行该镜像,是因为其容器运行时(如containerd)原生支持OCI格式规范;而你使用的Docker 19.03.1默认未开启OCI manifest兼容,因此需要通过上述方式调整。

内容的提问来源于stack exchange,提问作者Phil Harvey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 22:48:10