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

Docker镜像构建失败:无法连接npm registry问题求助

Docker构建失败:npm依赖安装报EHOSTUNREACH错误

问题背景

Docker镜像构建时卡在npm install步骤,日志返回EHOSTUNREACH连接失败错误。相同的Dockerfile此前(昨晚)可正常构建,本地环境未做任何改动,今日突然失败。已通过在Dockerfile中添加RUN curl -v https://registry.npmjs.com/确认是无法连接npm仓库导致的问题。

Dockerfile内容如下:

# base image
FROM node:18.17.0

# set work directory
ENV ProjectDir=/app
RUN mkdir -p $ProjectDir
WORKDIR $ProjectDir
COPY . $ProjectDir

RUN npm install --verbose --omit=optional
RUN npm run build --verbose

# set environment variables
ENV NODE_ENV=production

EXPOSE 3000

CMD [ "npx", "serve", "build" ]

排查与解决方案

1. 重置Docker网络

  • 重启Docker服务,重置网络栈:
    # Linux环境
    sudo systemctl stop docker
    sudo systemctl restart docker.socket docker.service
    
    # Windows/macOS直接在Docker Desktop中重启应用
    
  • 测试使用host网络构建(仅用于排查,不建议生产环境):
    docker build --network host -t your-image-tag .
    

2. 更换npm镜像源

临时切换到国内稳定镜像源,规避官方源连接问题:
修改Dockerfile中的安装步骤,添加镜像源参数:

RUN npm install --verbose --omit=optional --registry=https://registry.npmmirror.com/

或者先全局配置镜像源再安装:

RUN npm config set registry https://registry.npmmirror.com/
RUN npm install --verbose --omit=optional

3. 检查DNS配置

  • 在Dockerfile中添加DNS解析测试,确认域名解析是否正常:
    RUN nslookup registry.npmjs.com
    
  • 若解析失败,手动指定Docker DNS服务器:
    Linux下编辑/etc/docker/daemon.json(Windows/macOS在Docker Desktop设置中配置):
    {
      "dns": ["8.8.8.8", "1.1.1.1"]
    }
    
    配置完成后重启Docker服务。

4. 清理Docker构建缓存

旧缓存可能残留异常网络状态,清理后重新构建:

docker builder prune -a
docker build -t your-image-tag .

5. 验证宿主机网络

确认宿主机本身能正常访问npm仓库:

curl -v https://registry.npmjs.com/

如果宿主机也无法访问,说明是本地网络或ISP的问题,需排查防火墙、代理设置或联系网络服务商。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:01:06