人麻了, Docker 镜像配了还一直访问超时,么得日志看好气啊!

2024-09-23 20:55:18 +08:00
 rangoBen

docker info:

Debug Mode: true
Registry Mirrors:
  https://mirror.iscas.ac.cn/
  https://docker.nju.edu.cn/

上面两个地址都可以 ping 通

docker pull mysql:

Using default tag: latest
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

我到底错哪儿了!我把 GPT 都活剐了。。。

3241 次点击
所在节点    Docker
17 条回复
photon006
2024-09-23 21:17:07 +08:00
我今天也是,之前搭建在 cf worker 的源突然用不了,gpt 也无法解决

后来发现部分镜像可以拉

docker pull nginx
docker pull linuxserver/syncthing


部分不行,比如

docker pull mzz2017/v2raya

cf worker 显示日志是这样

"response": {
"status": 401
}

很迷,看起来 gfw 还能区分镜像名拦截,按理说 https 会加密路径、参数,不科学。
radiocontroller
2024-09-23 21:18:39 +08:00
https://mirror.ccs.tencentyun.com/ ,用这个试试,放在第一个
photon006
2024-09-23 21:21:25 +08:00
@radiocontroller 这个可以,多谢
rangoBen
2024-09-23 21:36:25 +08:00
我这还是不行,主要是不清楚为什么没有走镜像地址,还是报错:Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
photon006
2024-09-23 21:39:20 +08:00
不对,刚才可以拉的机器是腾讯云,换了其他机器还是不行

Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://mirror.ccs.tencentyun.com/
Live Restore Enabled: false

docker pull mzz2017/v2raya
docker pull swxk521/udp2raw


错误日志

sudo journalctl -u docker.service -f

Sep 23 21:31:26 gateway dockerd[51811]: time="2024-09-23T21:31:26.642633279+08:00" level=info msg="Attempting next endpoint for pull after error: Get \"https://mirror.ccs.tencentyun.com/v2/\": dial tcp: lookup mirror.ccs.tencentyun.com on 10.13.1.7:53: no such host" spanID=7bd8e1faeac6c529 traceID=c91ef66d2a19e9a64d8fda2b34236a77
Sep 23 21:31:41 gateway dockerd[51811]: time="2024-09-23T21:31:41.643277798+08:00" level=warning msg="Error getting v2 registry: Get \"https://registry-1.docker.io/v2/\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)" spanID=7bd8e1faeac6c529 traceID=c91ef66d2a19e9a64d8fda2b34236a77

ping mirror.ccs.tencentyun.com
PING mirror.ccs.tencentyun.com (127.0.0.2) 56(84) bytes of data.
64 bytes from 127.0.0.2 (127.0.0.2): icmp_seq=1 ttl=64 time=0.051 ms
64 bytes from 127.0.0.2 (127.0.0.2): icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from 127.0.0.2 (127.0.0.2): icmp_seq=3 ttl=64 time=0.050 ms

这个应该只有腾讯云能用,腾讯云机器可以 ping 通
PING mirror.ccs.tencentyun.com (169.254.0.51) 56(84) bytes of data.
64 bytes from 169.254.0.51: icmp_seq=1 ttl=64 time=0.105 ms
64 bytes from 169.254.0.51: icmp_seq=2 ttl=64 time=0.144 ms
64 bytes from 169.254.0.51: icmp_seq=3 ttl=64 time=0.115 ms

换了其他人搭建在 cf worker 的源也不行,比如
{
"registry-mirrors": ["https://dockerhub.icu"],
"log-driver":"json-file",
"log-opts": {"max-size":"1g", "max-file":"1"}
}
photon006
2024-09-23 21:40:36 +08:00
@rangoBen 你看日志

sudo journalctl -u docker.service -f

实际上走了镜像源,走不通,回落到官方源 https://registry-1.docker.io/v2/
coolcoffee
2024-09-23 21:43:33 +08:00
国内的镜像都死的差不多了吧,像阿里云的镜像加速拉了一个 postgres 的 latest 镜像居然是两年前的我也是醉了。

快速的解决办法就是手动找 gitpod 或者 github codespace 这类云 ide ,在线拉一个镜像然后用 docker save -o 保存 tar 。更麻烦但是一劳永逸的解决办法就是自建 registry ,设置走代理去拉。
yov123456
2024-09-23 22:09:09 +08:00
{
"registry-mirrors": ["https://registry.dockermirror.com"]
}
cctv6
2024-09-23 22:58:45 +08:00
我一直觉得用代理比镜像好用多了。
配置简单粗暴,缺点就是服务器上不是那么方便。
halou12
2024-09-23 23:53:10 +08:00
应该是 auth.docker.io 的原因
https://blog.lty520.faith/%E5%8D%9A%E6%96%87/%E8%87%AA%E5%BB%BAdocker-hub%E5%8A%A0%E9%80%9F%E9%95%9C%E5%83%8F/#%e5%8f%82%e8%80%83%e6%96%87%e7%ab%a0
xiri
2024-09-24 01:06:57 +08:00
你用的 docker 镜像可能没有对 www-authenticate 请求头做重写,docker pull 的时候会先请求 auth.docker.io 获取认证然后才是从 registry-1.docker.io 拉取镜像文件,然后 auth.docker.io 这个域名大概两周前被墙了,导致只反代/镜像 registry-1.docker.io 资源的站点实际无法拉取成功,最终 failback 到默认源
DiaoWang
2024-09-24 01:14:56 +08:00
直接给 docker 挂代理吧,去年在公司折腾好几天都不行
SeanChang
2024-09-24 01:36:25 +08:00
镜像问题,看看这个:
Docker/DockerHub 国内镜像源/加速列表( 0921 更新)
https://xuanyuan.me/blog/archives/1154
poisedflw
2024-09-24 08:41:17 +08:00
遇到过同样的问题,更换镜像无法解决,最终还是会请求到 registry-1.docker.io (我的是 mysql:5.7 )。解决办法只有配置代理,能上 v2 基本都有代理吧?

```
# /etc/systemd/system/docker.service.d/http_proxy
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
```
Baymaxbowen
2024-09-24 09:12:04 +08:00
https://github.com/DaoCloud/public-image-mirror

最近发现这个项目,试了一下 速度很不错
rangoBen
2024-09-24 15:25:44 +08:00
@halou12 看之前的日志是有这个原因,不过搞代理比较麻烦,我先不弄了。目前我只是学习
@SeanChang 感谢提供的资源,我直接在 pull 的时候指定 https://dockerproxy.cn 镜像源 可以下载了
docker pull https://dockerproxy.cn/library/mysql:5.7.44
ahsgjs
2024-09-24 16:13:02 +08:00
我才折腾完,和你遇到的问题一样,简要说一下结论:
1 开 socket5 代理,
2 再在 docker 设置 http 代理,
3 然后用 http 转 socket5 的代理转发软件转发(例如 Proxifier )

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1075186

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX