docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker search mysql报错

docker search mysql报错问题分析及解决

作者:Geo_V

Docker是现在非常流行的一种容器化技术,能够方便开发者将应用程序打包进入容器,做到跨平台的部署,这篇文章主要介绍了docker search mysql报错问题分析及解决的相关资料,需要的朋友可以参考下

问题描述

云服务器安装完 Docker 之后,想安装 mysql,但是通过命令 docker search mysql 查看相应版本信息时报错超时,具体信息如下:

Error response from daemon: Get “https://index.docker.io/v1/search?q=mysql&n=25”: dial tcp 65.49.26.99:443: i/o timeout

问题分析

1、修改配置文件

将之前 /etc/docker/daemon.json 文件中配置的镜像源修改为腾讯云镜像源。

vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}

2、重启 Docker 服务

sudo systemctl daemon-reload
sudo systemctl restart docker

3、验证是否生效

docker info | grep -A 3 "Registry Mirrors"

输出中如果包含以下信息,则说明镜像源配置成功:

Registry Mirrors:
 https://mirror.ccs.tencentyun.com/

但此时通过命令 docker search mysql 查看相应版本信息时依然报超时错误。

这个时候就需要查看是否是服务器出口访问受限或者是 DNS 配置异常。

4、测试是否能直连 Docker Hub

curl -v https://index.docker.io/v1/

如果输出包含 HTTP/1.1 200 OK,说明可以访问。但此时我们发现一直处于连接中的状态:

5、测试 DNS 解析

nslookup index.docker.io

dig index.docker.io

看是否能解析出 IP 地址。此处可以 IP 地址是可以正常解析的:

6、查看当前 DNS 设置

cat /etc/resolv.conf

此处可以看到 nameserver 是腾讯云的默认内网 DNS,也没有问题,无需修改。

那最终能确定问题可能出在:

Docker Hub(index.docker.io)国外服务器被防火墙或路由策略阻断导致。这是国内腾讯云机器非常常见的问题:Ping、nslookup 都通,但访问 https://index.docker.io(443 端口)超时。

表现就是现在的错误:

dial tcp 64.13.192.74:443: i/o timeout

解决方法

Docker 搜索(docker search) 默认走的是 Docker Hub API(index.docker.io),而不是镜像加速器镜像源(registry)。所以即使设置了 "registry-mirrors",docker search 仍可能访问不到。

所以有两个选择:

1、直接拉取镜像

不再用 docker search,直接拉取镜像。例如拉取 MySQL:

docker pull mysql:8.0.43-debian

注意:腾讯云镜像加速器支持加速拉取,但不支持 docker search。也就是说我们可以按刚才的配置,拉镜像没问题,但搜索会超时。

2、使用国内镜像站搜索镜像

如果非要先搜索一下,再决定是否要拉取的话,就只能通过国内的一些镜像站先搜索,再去拉取,以下是一个在 GitHub 维护的仓库,里面有不少镜像站,大家可以搜索看看:

在上面搜索 mysql,可以找到对应版本,然后复制镜像拉取命令。

总结

到此这篇关于docker search mysql报错问题分析及解决的文章就介绍到这了,更多相关docker search mysql报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

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