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

Docker构建Ubuntu容器时无法解析archive.ubuntu.com域名导致构建失败

Docker构建Ubuntu容器时无法解析archive.ubuntu.com域名导致构建失败

看起来你遇到了Docker构建过程中DNS解析失败的棘手问题,直接导致apt没法访问Ubuntu官方源,进而卡在安装wget这一步没法继续。我来帮你梳理几个可行的排查和解决方向:

核心问题定位

从你给出的错误日志能明确看到,容器内部无法解析archive.ubuntu.com和security.ubuntu.com这两个域名,这是所有后续安装失败的根源:

#0 56.42 Err:1 http://archive.ubuntu.com/ubuntu focal InRelease
#0 56.42 Temporary failure resolving 'archive.ubuntu.com'

解决思路与步骤

  • 确认Docker全局DNS配置生效
    你提到已经检查了daemon.json,但要确保配置格式正确且Docker服务已重启。通常/etc/docker/daemon.json的DNS配置应该是这样的:

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

    修改完成后执行sudo systemctl restart docker重启Docker服务,再重新尝试构建镜像。

  • 临时在Dockerfile中指定DNS
    如果不想修改全局配置,可以在Dockerfile的FROM指令后添加一行,强制容器使用公共DNS服务器:

    FROM ubuntu:20.04
    RUN echo "nameserver 8.8.8.8" > /etc/resolv.conf
    # 后续的RUN命令保持不变
    

    这样后续的apt命令就能正常解析域名了。

  • 检查宿主机的网络与DNS状态
    先在宿主机上测试域名解析:nslookup archive.ubuntu.com,如果宿主机也无法解析,那问题出在宿主机的网络配置上,先修复宿主机的DNS(比如修改/etc/resolv.conf添加公共DNS);如果宿主机能正常解析,那大概率是Docker自身的网络栈出现了异常。

  • 尝试使用宿主机网络构建
    在构建命令中加上--network host参数,让容器直接复用宿主机的网络配置,绕开Docker的内部DNS:

    docker build --network host -t your-image-name .
    
  • 排查防火墙或代理干扰
    如果宿主机开启了防火墙(比如ufw),可以暂时关闭测试:sudo ufw disable;如果有全局代理,要确保Docker容器能正确继承代理配置,或者暂时关闭代理再尝试构建。

另外你提到浏览器访问archive.ubuntu.com也有异常,这说明你的宿主机网络本身可能存在连通性问题,建议先解决宿主机的网络访问问题,再回来处理Docker构建的问题。

备注:内容来源于stack exchange,提问作者adastra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:49:38