国庆节后恢复学习的过程中,笔者发现在使用Dockerfile构建docker镜像时,其中的apt-get update命令长时间卡顿,在ubuntu系统中对apt进行常规换源时,出现了gpg验证失败的问题,在查阅资料进行多次尝试后,仍然毫无进展,经长时间思考与整理后,终于形成了完整的解决方案;
下图为解决问题前的问题示例:
W: GPG error: https://download.docker .com/Linux/ubuntu focal InRelease: The folloding signatures couldn't be verified because the public key is not available: NO PUBKEY
阅读报错可知,由于密钥的问题无法确认https://download.docker .com/Linux/ubuntu的资源,在查找/etc/apt文件夹中的资源时,找到其为使用过的docker源,受限于笔者的知识水平,尚且无法精准判断问题的所在,只能猜测为密钥过期或其他服务器自身原因
尝试1:
先将网站的GPG下载到本地,再手动添加此GPG,下载URL为
https://download.docker.com/linux/ubuntu/gpg
将GPG添加到本地
sudo apt-key add /home/python/Desktop/gpg
注意后面的地址为安装GPd
结果仍然报错
尝试2:
更换国内的apt源
这里笔者采用的以下博主方法
Ubuntu apt-get 国内镜像源替换(新手必看,超详细!各种镜像源网站都有)_apt-get 镜像-CSDN博客
依然报错
尝试3:
分析原因为可能ubuntu认为该网站不安全,将其受限访问
解决方案:
在softwore&updates中的othersoftware中找到此网站,将勾去掉,但需要注意的是此时的用户需要有管理员权限,否则在刷新时会出现Error while refreshing cache
结果为GPG不会报错,但在update时,会出现404 not found(IP:13.32.121.111 443),读者自己尝试时可能主机号有出入,经查此ip为上面download.docker.com的ip,同时可以使用Dockerfile正常构建镜像,虽然没有彻底解决,但也可以让长时间思考的笔者聊以慰藉,颇有望梅止渴之意。
最终解决方案:
分析:因为报错的来源为source.list.d中的docker.list,为docker的本地仓库,由于关于docker配置国内仓库的教程极多,笔者不再赘述,安装完成后,需要将这里的docker.list删除,再将apt更改为国内镜像仓库,即可正常update apt与构建镜像
以上为作者自身经验,如持有疑问或发现错误,欢迎交流与指正