问:明明是香港、美国服务器,为什么还不能访问dockerHUB,安装docker镜像总是失败?

相关服务:香港服务器租用

海外服务器无法安装docker镜像怎么办?ubuntu、centos系统怎么修改dns?

答:这种问题主要发生在回国优化线路上,比如香港、美国的BGP优化线路、精品线路等。

我们之前也发生过这种情况,所以写了这篇文章作为笔记。

事情是这样的,原来ip还没有过移动联通电信的白名单,所以走的国际线路,访问一切海外东西都没问题,突然过白以后,进入了优化线路,很多用户就没办法安装docker的东西了。

经过好一番研究,原来回国优化线路,即便访问海外也是通过回国线路访问的,只不过就是没有拦截而已,这就造成了一个后果就是原来的海外的dns可能无法访问,比如谷歌的8.8.8.8,微软的114.114.114.114。而你出现这种问题,八成dns用的8.8.8.8、114.114.114.114,不信你的ubuntu系统执行这个命令看看dns是不是我说的

ubuntu系统
#老版本
systemd-resolve --status

#新版本也可以这个
resolvectl status

centos系统
cat /etc/resolv.conf

解决方案:

修改dns为国内可以访问的更好的dns。目前推荐的dns有以下:

服务商IPv4地址特点
Cloudflare DNS1.1.1.1注重隐私和速度,全球节点多,适合国际访问
IBM Quad9 DNS9.9.9.9具备安全特性,能自动屏蔽恶意网站
OpenDNS208.67.222.222提供内容过滤等附加功能

我这里推荐cf的dns为第一位,IBM的补位,还有一个名额的话,比如ubuntu等系统可以设置3个dns的,第3个推荐谷歌的8.8.8.8

具体操作步骤

ubuntu22/24系统修改dns方法(全局替换)

注意:该方法永久生效,不会开关机就重置dns了

1、打开文件

/etc/systemd/resolved.conf

2、修改内容

将里面的[Resolve]下面的全部内容替换为下面的,不用担心出问题,因为它本身就是前面带#全部注释,没有用处的。

[Resolve]
DNS=1.1.1.1 9.9.9.9
FallbackDNS=8.8.8.8
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=yes
#DNSStubListener=yes

3、重启服务

保存修改后,重启systemd-resolved服务。

sudo systemctl restart systemd-resolved

centos7.9/8stream等全部通用修改dns

1、打开网卡配置文件

# 查看网卡名称
ip addr

# 查看配置文件(通常位于 /etc/sysconfig/network-scripts/)
ls /etc/sysconfig/network-scripts/ifcfg-*

2、编辑网卡配置文件

sudo vi /etc/sysconfig/network-scripts/ifcfg-ens192  # 替换为您的网卡名

3、修改或添加以下内容

# 确保有以下配置
BOOTPROTO=none  # 或者 static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens192
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.1.100    # 您的服务器IP
PREFIX=24
GATEWAY=192.168.1.1     # 您的网关
DNS1=1.1.1.1
DNS2=9.9.9.9
DNS3=8.8.8.8

4、重启网络服务

sudo systemctl restart NetworkManager
# 或者
sudo nmcli connection reload