电脑课堂
柔彩主题三 · 更轻盈的阅读体验

镜像构建时网络问题排查与解决

发布时间:2026-01-17 03:20:30 阅读:154 次

在使用 Docker 或其他容器工具构建镜像时,很多人会遇到网络相关的问题。比如拉取基础镜像失败、包安装超时、依赖下载中断等。这些问题大多不是工具本身有 bug,而是网络环境造成的。

最常见的几种报错

构建过程中出现类似这样的提示很常见:

failed to pull image: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection

或者在安装软件包时报错:

Err:1 http://deb.debian.org/debian stable InRelease  Temporary failure resolving 'deb.debian.org'

这类信息说明构建过程无法正常访问外部网络资源,根本原因通常出在网络配置或外部访问限制上。

检查本地网络连通性

先别急着改配置,确认下你的主机能不能正常上网。比如执行:

ping -c 4 www.baidu.com

如果 ping 不通,那问题可能出在本地网络。WiFi 断了、网线松了、公司防火墙拦了都可能导致这种情况。有时候在家能构建,在公司就一直卡住,大概率是网络策略变了。

Docker 的 DNS 设置问题

即使主机能上网,Docker 容器也可能上不了。因为容器用的是独立的网络命名空间,默认可能用了不可达的 DNS 服务器。可以尝试修改 Docker 的 DNS 配置,在 /etc/docker/daemon.json 中加入:

{
  "dns": ["8.8.8.8", "114.114.114.114"]
}

改完后重启 Docker 服务:sudo systemctl restart docker,再试一次构建。

国内用户建议换镜像源

官方 registry 在国外,国内直连速度慢还容易断。推荐换成国内镜像加速器。比如阿里云就提供个人专属的 Docker 镜像加速地址。配置方法同样是写入 daemon.json

{
  "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}

保存后重启 Docker,再构建镜像就会自动走加速通道,成功率高很多。

构建时临时换源更灵活

有些时候只是安装系统包时慢,比如 Ubuntu 的 apt-get update。可以在 Dockerfile 里临时替换为国内源:

FROM ubuntu:20.04
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
RUN apt-get update && apt-get install -y curl

这样不用改宿主机配置,也能加快构建速度。

代理环境别忘了设置

如果你在公司内网,需要走代理才能上网,那也得告诉 Docker。可以通过启动参数传入:

docker build --build-arg HTTP_PROXY=http://proxy.company.com:8080 \
             --build-arg HTTPS_PROXY=http://proxy.company.com:8080 \
             -t myapp .

同时在 Dockerfile 里接收参数:

ARG HTTP_PROXY
ARG HTTPS_PROXY
ENV HTTP_PROXY=$HTTP_PROXY
ENV HTTPS_PROXY=$HTTPS_PROXY

不然构建过程里的 wget、curl 都会因为没代理而失败。

镜像构建的网络问题其实不难处理,关键是要分清是主机网络、Docker 配置,还是源站访问的问题。一步步排查,多数情况换个 DNS 或镜像源就能搞定。