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

Docker构建镜像执行apt-get update失败 域名临时解析错误

问题修复方案

这是Arch Linux环境下Docker容器出站网络阻断的典型问题,和镜像源、Docker版本无关,核心是网络转发、防火墙规则适配问题,按以下步骤操作即可修复:

1. 先确认宿主机IPv4转发开关已开启

Docker依赖宿主机的IP转发能力实现容器流量出网,Arch默认未开启该配置:

  • 执行命令检查当前状态:
    sysctl net.ipv4.ip_forward
    
  • 如果返回值为net.ipv4.ip_forward = 0,创建配置文件永久开启转发:
    echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-docker.conf
    sudo sysctl --system
    
  • 再次执行检查命令,确认返回值为1再进行后续操作。

2. 修复Arch默认iptables/nftables兼容问题

Arch当前默认使用iptables-nft作为iptables后端,Docker自动生成的网络规则无法在nft兼容层正常生效,是该问题最高发诱因:

  • 安装iptables组件并切换到legacy后端:
    sudo pacman -Syu iptables
    sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
    
  • 清空现有异常iptables规则,重启Docker让其重新生成正确的规则链:
    sudo iptables -F
    sudo iptables -t nat -F
    sudo systemctl restart docker
    

3. 排除NetworkManager对docker网桥的干扰

如果宿主机使用NetworkManager管理网络(桌面版Arch默认配置),其默认会接管未声明的网桥设备,导致docker0网桥流量被拦截:

  • 创建NetworkManager配置文件豁免docker网桥管理,将以下内容写入/etc/NetworkManager/conf.d/00-docker.conf:
    [device]
    match-device=docker*
    managed=false
    
  • 重启服务生效:
    sudo systemctl restart NetworkManager docker
    

4. 优化DNS配置(可选,针对国内网络环境)

你之前配置的192.168.1.1是家用路由器地址,部分路由器不支持公网DNS递归请求,8.8.8.8在国内连通性不稳定,可修改/etc/docker/daemon.json调整DNS配置:

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

修改后重启Docker服务即可。

修复验证

依次执行以下命令验证连通性:

  1. 验证三层IP连通性:
    docker run --rm busybox ping -c 3 8.8.8.8
    
  2. 验证域名解析+连通性:
    docker run --rm busybox ping -c 3 deb.debian.org
    

两条命令都能正常收到回包的话,重新执行docker build构建你的Debian镜像,就不会再出现域名解析失败的报错。


内容的提问来源于stack exchange,提问作者Erik van de Ven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:12:23