Linux
虚拟机的 DNS
查看当前 DNS 配置
bash
cat /etc/resolv.conf测试 DNS 解析
bash
# 测试能否解析域名
nslookup docker.mirrors.ustc.edu.cn
dig docker.mirrors.ustc.edu.cn
# 测试能否拉取镜像
sudo docker pull openjdk:17-jdk-alpine输出:
bash
nameserver 127.0.0.53这里的 DNS 配置指向了本地 127.0.0.53(systemd-resolved 的本地 stub resolver),这个配置本身没问题,但上游 DNS 服务器可能没有正确设置。
查看当前上游 DNS 配置
bash
resolvectl status输出:
bash
Current DNS Server:192.168.154.2
DNS Servers:192.168.154.2
DNS Domain:localdomainDNS 服务器是 192.168.154.2,这是你虚拟机的网关地址(可能是 NAT 网络的网关)。这个网关可能没有配置 DNS 转发功能,导致无法解析外网域名。
解决方案:修改 DNS 为公共 DNS
方法1:直接用 resolvectl 设置(最快)
bash
# 设置网卡 ens33 的 DNS 为阿里 DNS
sudo resolvectl dns ens33 223.5.5.5 223.6.6.6
# 设置备用 DNS
sudo resolvectl dns ens33 223.5.5.5 223.6.6.6 114.114.114.114
# 验证
resolvectl status ens33验证输出:
DNS Serves: 223.5.5.5 223.6.6.6 114.114.114.114包含以上内容说明成功,现在用的是阿里 DNS(223.5.5.5)和 114 DNS。
拉取镜像
bash
sudo docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/eclipse-temurin:17-jdk-alpine