docker pull 报错 ''net/http: TLS handshake timeout"

说明

本文排查基本场景为 OpenWRT(ARM)

问题描述

docker pull TARGET_IMAGE 会返回报错

... net/http: TLS handshake timeout

尝试方法

一、命令中直接使用代理

HTTP_PROXY="http://your-proxy-here" docker pull TARGET_IMAGE
似乎有时能开启拉取动作, 但是最终还是失败

二、尝试登录

基于问题描述中的详细报错, 尝试直接从浏览器访问报错里写出的 URL
发现会返回 auth fail 字样的信息
于是在 pull 命令之前, 尝试使用 docker login 先进行登录
当然, 这步尝试中也可以试着带上代理配置项

三、其它位置加入代理信息

~/.bash_profile

写入

HTTP_PROXY=YOUR_PROXY_HERE
HTTPS_PROXY=OTHER_KIND_OF_PROXY

docker 启动文件

参考内容 来自本站 👉套娃参考
这个需要自己确认一下, 我的 OpenWRT 在 /etc/init.d/dockerd

start_service() {
        local nofile=$(cat /proc/sys/fs/nr_open)

        process_config

        procd_open_instance

        # set proxy by Se@n
        procd_set_param env HTTP_PROXY="YOUR_PROXY_HERE"

        procd_set_param stderr 1
        if [ -z "${DOCKERD_CONF}" ]; then
                procd_set_param command /usr/bin/dockerd
        else
                procd_set_param command /usr/bin/dockerd --config-file="${DOCKERD_CONF}"
        fi
        procd_set_param limits nofile="${nofile} ${nofile}"
        procd_close_instance
}

补充

最新尝试, 由于我的 dockerd 修改时没加 HTTPS 代理, 所以最后想要成功拉取还是需要 HTTPS 代理配置项才能实现
所以这个问题的最终原因应该还是网络问题

镜像站失效

之前应该也是拉取失败问题, 给 Docker 配置过镜像仓库
不过这次排查时发现, 似乎镜像站也有很多失效了
可以考虑 自建

posted @ 2025-03-21 17:10  tfel-ypoc  阅读(452)  评论(0)    收藏  举报