Windows环境下Docker Compose构建Nginx服务遇403权限错误求助
排查Docker Compose构建Nginx容器时的403 Forbidden错误
之前可正常运行的Docker Compose配置,在Windows环境下构建时出现如下错误:
=> ERROR [internal] load metadata for docker.io/library/nginx: 1.2s
[internal] load metadata for docker.io/library/nginx:1.23.1:
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unknown desc = failed to fetch anonymous token: unexpected status: 403 Forbidden
ERROR: Service 'nginx_ser' failed to build : Build failed
对应的Nginx容器配置:
nginx_ser: container_name: nginx_container command: nginx -g 'daemon off;' build: context: ./nginx dockerfile: Dockerfile.nginx restart: on-failure depends_on: # nginx last service - chat_django_ser networks: - main ports: - "80:80"
排查步骤
- 检查网络与代理设置
- 打开命令提示符,执行
curl https://hub.docker.com,验证能否正常访问Docker Hub。如果无法访问,检查Windows系统的代理配置,确保Docker Desktop的代理设置(路径:Docker Desktop设置 -> Resources -> Proxies)与系统一致,或者暂时关闭代理重试。
- 打开命令提示符,执行
- 手动拉取镜像验证
- 执行命令
docker pull nginx:1.23.1,尝试手动拉取指定版本的Nginx镜像。如果手动拉取也报403,说明是Docker Hub的访问权限/网络问题;如果手动拉取成功,再重新运行docker-compose up --build。
- 执行命令
- 清理Docker缓存
- 执行
docker builder prune清理构建缓存,然后重新执行构建命令,避免缓存导致的异常。
- 执行
- 检查Dockerfile基础镜像
- 打开
./nginx/Dockerfile.nginx,确认基础镜像声明是否正确(比如FROM nginx:1.23.1),有没有拼写错误。也可以尝试替换为国内镜像源的Nginx,比如FROM registry.cn-hangzhou.aliyuncs.com/library/nginx:1.23.1,测试是否能正常拉取。
- 打开
- 重启或更新Docker Desktop
- 重启Docker Desktop服务,排除服务运行异常的可能;如果使用的是旧版本Docker Desktop,建议更新到最新版,修复已知的镜像拉取兼容问题。
- 排查防火墙/杀毒软件拦截
- 暂时关闭Windows Defender防火墙或第三方杀毒软件,验证是否是安全软件拦截了Docker的网络请求。如果关闭后恢复正常,需要将Docker相关进程添加到安全软件的允许列表中。
内容的提问来源于stack exchange,提问作者Farhang Amaji
相关产品推荐
相关产品推荐

