Ubuntu安装Docker CE遇“Could not resolve host”等错误求助
Hey,我之前在Ubuntu上装Docker CE的时候也踩过这两个坑!curl: (6) Could not resolve host: download.docker.com和gpg: no valid OpenPGP data found其实是连锁问题——前者是域名解析失败导致没拿到GPG密钥,后者自然就没数据可以处理了。下面是我亲测有效的解决步骤:
先搞定域名解析问题(curl报错的根源)
这个报错说明你的Ubuntu机器没法解析download.docker.com这个域名,大概率是DNS设置的问题,或者网络环境(比如公司内网、校园网)限制了外部访问。
临时更换DNS服务器:试试用公共DNS,比如谷歌的
8.8.8.8或者阿里云的223.5.5.5:sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf要是你的系统用
systemd-resolved管理网络,直接改resolv.conf可能会被自动覆盖,这时候用这个命令:sudo systemd-resolve --set-dns=8.8.8.8 --interface=eth0记得把
eth0换成你的实际网卡名,用ip addr命令就能查到。测试解析是否正常:执行下面的命令,如果能返回对应的IP地址,说明DNS问题解决了:
nslookup download.docker.com
解决GPG密钥导入失败的问题
如果DNS没问题但还是报gpg: no valid OpenPGP data found,可能是网络不稳定导致curl没完整下载密钥,或者直接用curl导入的方式有问题,可以换这些方法:
用apt-key adv命令直接导入密钥:绕开curl,直接从Ubuntu的密钥服务器获取Docker官方密钥(这个指纹是Docker官方公开的,放心用):
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 9DC858229FC7DD38854AE2D88D81803C0EBFCD88手动下载密钥文件再导入:如果上面的方法还是不行,试试先把密钥文件下载到本地,再导入:
wget https://download.docker.com/linux/ubuntu/gpg -O docker.gpg sudo apt-key add docker.gpg rm docker.gpg要是wget也失败,那还是网络访问的问题,得先确保你的机器能正常连接到外部网络。
完成Docker CE的安装
解决上面的问题后,继续走完安装流程:
添加Docker官方软件源:这里用Ubuntu版本代号的变量,会自动适配你的系统(比如20.04是focal,22.04是jammy):
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"更新apt缓存:
sudo apt update安装Docker CE及相关组件:
sudo apt install docker-ce docker-ce-cli containerd.io验证安装是否成功:启动Docker服务并运行测试镜像:
sudo systemctl start docker sudo docker run hello-world如果能看到“Hello from Docker!”的输出,就说明安装成功啦!
内容的提问来源于stack exchange,提问作者Kuldeep Dangi

