国内服务器不能拉取docker镜像问题的解决办法【Nginx反代】

对于以上问题,我的解决办法就是Nginx配置反代,用的时候启用,不用的时候关闭,省的被白嫖流量。

location /v2/ {
                proxy_pass https://registry-1.docker.io;  # Docker Hub 的官方镜像仓库
                proxy_set_header Host registry-1.docker.io;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;

                # 关闭缓存
                proxy_buffering off;

                # 转发认证相关的头部
                proxy_set_header Authorization $http_authorization;
                proxy_pass_header  Authorization;

                # 重写 www-authenticate 头为你的反代地址
                proxy_hide_header www-authenticate;
                
                #同理,如果你没域名的话,这里请填写IP地址
                add_header www-authenticate 'Bearer realm="https://这里替换成你的域名或者IP/token",service="registry.docker.io"' always;
                # always 参数确保该头部在返回 401 错误时无论什么情况下都会被添加。

                # 对 upstream 状态码检查,实现 error_page 错误重定向
                proxy_intercept_errors on;
                # error_page 指令默认只检查了第一次后端返回的状态码,开启后可以跟随多次重定向。
                recursive_error_pages on;
                # 根据状态码执行对应操作,以下为301、302、307状态码都会触发
                error_page 301 302 307 = @handle_redirect;
        }
        location /token {
                resolver 8.8.8.8 valid=6000s;
                proxy_pass https://auth.docker.io;  # Docker 认证服务器

                # 设置请求头,确保转发正确
                proxy_set_header Host auth.docker.io;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
            
                # 传递 Authorization 头信息,获取 Token
                proxy_set_header Authorization $http_authorization;
                proxy_pass_header Authorization;
                # 禁用缓存
                proxy_buffering off;
        }
        location @handle_redirect {
                resolver 8.8.8.8;
                set $saved_redirect_location '$upstream_http_location';
                proxy_pass $saved_redirect_location;
        }

评论

  1. loren
    4 月前
    2025-2-27 16:46:13

    Unable to find image ‘xxx.xxx.com/raywangqvq/bilibili_tool_pro:latest’ locally
    docker: Error response from daemon: unauthorized: authentication required.
    See ‘docker run –help’.
    其中xxx.xxx.com是代理网址,之前都正常,最近一周开始无法拉取。报错。
    请帮忙解决一下,多谢。

    • lark
      博主
      loren
      4 月前
      2025-2-27 16:50:48

      这是需要认证?我记得前几天说docker镜像对每隔独立IPV4有拉取次数限制了,考虑到是反代走的前期是是服务器IP,可能是次数超了?
      简单来来说,就是这个代理镜像的拉取次数达到上限了

      • loren
        lark
        4 月前
        2025-2-27 16:54:24

        请问这个是要等一段时间释放么,还是IP彻底封杀了……

        • lark
          博主
          loren
          4 月前
          2025-2-27 16:59:27

          如果是因为拉取次数这原因不能用,不会封杀,隔一段时间就行了

          这是你自建的吗,自建的自己用完关了就行,不然容易被扫到白嫖

          • loren
            lark
            4 月前
            2025-2-27 17:17:34

            嗯嗯,是我自建的。那我注意一些,按理说我个人的访问量,不会触及到关闭的,不知道是不是被嫖了。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇