apt-get update:暂时无法解析 Docker 容器中的‘*.debian.org’

apt-get update:暂时无法解析 Docker 容器中的‘*.debian.org’

我在 CentOS 8 上。

我的 Dockerfile 中的第二步尝试更新系统,但由于某种原因,它一直说无法解析deb.debian.orgsecurity.debian.org因此更新失败。

Step 2/13 : RUN apt-get update && apt-get -y install
 ---> Running in fa042e27e301
Err:1 http://security.debian.org/debian-security buster/updates InRelease
  Temporary failure resolving 'security.debian.org'
Err:2 http://deb.debian.org/debian buster InRelease
  Temporary failure resolving 'deb.debian.org'
Err:3 http://deb.debian.org/debian buster-updates InRelease
  Temporary failure resolving 'deb.debian.org'
Reading package lists...
W: Failed to fetch http://deb.debian.org/debian/dists/buster/InRelease  Temporary failure resolving 'deb.debian.org'
W: Failed to fetch http://security.debian.org/debian-security/dists/buster/updates/InRelease  Temporary failure resolving 'security.debian.org'
W: Failed to fetch http://deb.debian.org/debian/dists/buster-updates/InRelease  Temporary failure resolving 'deb.debian.org'
W: Some index files failed to download. They have been ignored, or old ones used instead.
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

我尝试 ping 无法解析的域并且成功了,所以我很困惑为什么它在容器中失败了。

然后,我尝试从 Debian 创建 docker 容器,无需任何其他命令。进入新容器后,出现相同的问题(无法更新系统),然后我尝试 ping deb.debian.org& google.com,两次都出现此错误(当我在 alpine 容器上执行相同操作时,ping 成功,因此 Debian 肯定出了问题):

ping: deb.debian.org: Temporary failure in name resolution

我的/etc/docker/daemon.json

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

我有一台配置基本相同的虚拟机,用于在主机上发布容器之前对其进行测试。我收到的上述错误发生在我的虚拟机上,但重启后,它自行修复。重启主机后,错误仍然存​​在。

答案1

也许虚拟机上的网络没有与 docker 在构建(桥接)期间创建的默认网络进行通信,因此请尝试“主机”网络:

docker build --network host -t [image_name]

答案2

这将允许网络伪装主机的网络:

sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --zone=public --add-port=80/tcp
sudo firewall-cmd --zone=public --add-port=443/tcp
sudo firewall-cmd --reload

您也可以禁用firewalld,但我认为这是更友好的解决方案。

相关内容