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

M1芯片MacOS13.x下Docker构建镜像遇403 Forbidden错误求助

问题描述

在搭载M1芯片的MacOS 13.x系统中,执行以下Docker镜像构建命令:

docker build -t reddwarf/postgresql:1.0.0 .

触发403 Forbidden错误,完整错误输出如下:

➜  postgresql git:(main) ✗ docker build -t reddwarf/postgresql:1.0.0 .          
[+] Building 0.4s (3/3) FINISHED                                                                                                                                               
 => [internal] load build definition from Dockerfile                                                                                                                      0.0s
 => => transferring dockerfile: 74B                                                                                                                                       0.0s
 => [internal] load .dockerignore                                                                                                                                         0.0s
 => => transferring context: 2B                                                                                                                                           0.0s
 => ERROR [internal] load metadata for docker.io/bitnami/postgresql-repmgr:14-debian-11                                                                                   0.2s
------
 > [internal] load metadata for docker.io/bitnami/postgresql-repmgr:14-debian-11:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: unexpected status code [manifests 14-debian-11]: 403 Forbidden

使用的Dockerfile内容如下:

FROM --platform=linux/amd64 bitnami/postgresql-repmgr:14-debian-11

# switch to root to use apt
USER root

# install depandanices and postgreSQL required scripts
RUN apt update &&  apt install -y gnupg postgresql-common apt-transport-https lsb-release wget

# configure TS repo
RUN echo "deb https://packagecloud.io/timescale/timescaledb/debian/ bullseye main" >> /etc/apt/sources.list.d/timescaledb.list && \
    wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey |  apt-key add -

# install TS
RUN echo "\n" | /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh && apt update && apt install -y timescaledb-2-postgresql-14

# copy required assets to bitnami's postgreSQL directory
RUN cp -r /usr/share/postgresql/14/extension/timescaledb*   /opt/bitnami/postgresql/share/extension/ && \
    cp -r /usr/lib/postgresql/14/lib/timescaledb* /opt/bitnami/postgresql/lib/

# return to the normal user
USER 1001

已尝试但未解决问题的操作:

  • 执行docker login并登录成功
  • 在基础镜像声明中添加--platform=linux/amd64参数
  • 预拉取bitnami/postgresql-repmgr:14-debian-11镜像成功
解决方案

方法1:直接使用本地已拉取的镜像

既然已经成功拉取了目标基础镜像,修改Dockerfile的FROM行,指定使用本地镜像的哈希值或ID,避免构建时远程拉取元数据:

  1. 获取镜像哈希值:
docker inspect --format='{{.Id}}' bitnami/postgresql-repmgr:14-debian-11
  1. 修改Dockerfile的FROM行:
FROM --platform=linux/amd64 bitnami/postgresql-repmgr:14-debian-11@sha256:[你的镜像哈希值]

或者直接用镜像ID替换标签:

FROM --platform=linux/amd64 [镜像ID]

方法2:禁用构建缓存

执行构建命令时添加--no-cache参数,强制Docker跳过缓存,重新处理镜像元数据:

docker build --no-cache -t reddwarf/postgresql:1.0.0 .

方法3:更换Docker镜像源

Bitnami镜像可能存在Docker Hub访问限制,修改Docker配置使用国内镜像源:

  1. 编辑~/.docker/daemon.json文件(不存在则新建):
{
  "registry-mirrors": ["https://hub-mirror.c.163.com"]
}
  1. 重启Docker服务后再执行构建命令。

方法4:使用buildx跨平台构建

M1芯片上使用buildx工具执行跨平台构建,可绕过部分元数据拉取问题:

docker buildx build --platform linux/amd64 -t reddwarf/postgresql:1.0.0 .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:14:53