家里有个专门服务于homeassistant的docker硬件,但是里面的homeassistant好久没有更新了,因为没有软路由也没有魔法所以没办法轻松的docker pull。因为用的是ghcr.io,所以报错。

例如我搜索nginx,报错为:

Error response from daemon: Get "https://index.docker.io/v1/search?q=nginx&n=25": dial tcp: lookup index.docker.io: no such host

解决方法

这种情况大概率是DNS污染,我们可以通过host来绕过DNS污染的问题。

在ssh中输入

1
dig @114.114.114.114 index.docker.io 

你就可以获得index.docker.io的真实ip地址

命令

随便选择一个复制下来,然后编辑host文件:

1
vim /etc/hosts

按下i进入编辑模式,在一个空行中填写地址 空格 ip地址

例如:

1
index.docker.io 18.215.138.58 

然后按一次esc键,然后输入:wq来保存文件。

值得一提的是如果你修改失误,可以按esc后输入q!即可不保存退出。

然后在进行docker pull即可。

(如果有其他域名报错,解决方法同上,修改dig @114.114.114.114 index.docker.io中最后面的域名地址)

例如我输入docker pull ghcr.io/home-assistant/qemuarm-64-homeassistant:2023.3.6

下面是成功图片:

命令

总结

在不能使用或者使用魔法困难的docker设备上通过手动修改host可以避免dns污染,让设备成功下载镜像,避免无法使用的问题。

小记:博主用此方法成功更新homeassistant到最新的版本了