docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > ubuntu无法拉取docker镜像的问题

ubuntu系统中无法拉取docker镜像的问题及解决

作者:半壶清水

作者遇到的docker拉取mysql8.0镜像失败的问题,通过更换镜像加速器、更新配置、诊断DNS解析问题等步骤,最终成功使用DaoCloud镜像站拉取镜像,作者分享了解决问题的过程和经验,对遇到类似问题的人会有帮助

1、检查基础环境

1.1 查看docker运行状态

 sudo systemctl status docker

1.2 查看docker镜像加速器

cat /etc/docker/daemon.json


以上说明环境配置正确。接下来我们拉取mysql的docker镜像。

2、故障描述

2.1、尝试拉取mysql 8.0 的docker镜像

sudo docker pull mysql:8.0

2.2 控制台输出的故障描述

Error response from daemon: unknown: failed to resolve reference
“docker.io/library/mysql:8.0”: unexpected status from HEAD request to
https://2u56bifc.mirror.aliyuncs.com/v2/library/mysql/manifests/8.0?ns=docker.io:
403 Forbidden

2.3 故障现象解读

根据上述错误日志,可以看出镜像服务器拒绝了访问请求。

表示系统无法识别或处理指定的引用或资源。

3、问题处理思路:

3.1 查看你 Docker 配置文件中关于镜像加速器的设置

cat /etc/docker/daemon.json

3.2 更新镜像源配置

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

3.3 重新拉取docker镜像

sudo docker pull mysql:8.0

3.4 分析新的故障现象

Error response from daemon: failed to resolve reference
“docker.io/library/mysql:8.0”: failed to do request: Head
“https://hub-mirror.c.163.com/v2/library/mysql/manifests/8.0?ns=docker.io”:
dial tcp: lookup hub-mirror.c.163.com on 127.0.0.53:53: no such host

这个新的错误表明,系统无法将网易镜像的域名 hub-mirror.c.163.com 解析为IP地址。可见这是一个 DNS解析故障。

3.5 诊断DNS解析问题

  nslookup hub-mirror.c.163.com

试试解析百度域名

 nslookup www.baidu.com

3.6 继续更换新的镜像站

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
nslookup docker.m.daocloud.io

sudo systemctl pull mysql:8.0


4、总结

如果你不知道哪个镜像站可用,你也可以将一些常用的站点一次写入到你的daemon.json文件中:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
  "https://docker.m.daocloud.io",
  "https://docker.mirrors.ustc.edu.cn",
  "https://mirror.baidubce.com",
  "https://docker.nju.edu.cn",
  "https://docker.mirrors.sjtug.sjtu.edu.cn",
  "https://docker.mirrors.ustc.edu.cn",
  "https://mirror.ccs.tencentyun.comk",
  "https://registry.docker-cn.com",
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文