V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
mosby
V2EX  ›  Linux

自建简易 docker 镜像源

  •  
  •   mosby · 7 天前 · 2055 次点击

    很早之前为了省流量缓存镜像折腾的,看到最近突然有人 star 了,分享一下,帮助有需要的人

    实现方式是客户端将 gcr.io k8s.gcr.io quay.io docker.io registry-1.docker.io nvcr.io 这些域名解析到自己的机器,利用 nginx 根据域名分流到不同的 docker registry,利用 docker registry 的 pull through cache 功能缓存&加速镜像下载。

    如果部署在外网 vps 的话可以直接用,如果部署在内网还需要指定一个代理,具体步骤可以看仓库 README

    https://github.com/brighill/registry-mirror

    第 1 条附言  ·  6 天前
    感谢大家友好的评论

    不知道是不是因为邀请码制度,感觉评论都很友好,上次发帖分享好多人不看内容就开喷

    另外仓库里是好几年之前的配置了,可能有一些小问题,我看很多人 fork 改了一些配置都挺不错,欢迎各位提 PR 完善配置
    7 条回复    2024-06-12 21:02:56 +08:00
    anubu
        1
    anubu  
       7 天前   ❤️ 1
    非常感谢分享,给 OP 点赞。
    之前折腾了一个一样的实现,客户端侧老老实实配置 mirror ,发现 docker 只能 mirror dockerhub ,其它仓库直接忽略。被迫切换到 containerd 用它的 hosts.toml 。看到 OP 客户端侧劫持 DNS 解析加 insecure ,豁然开朗。
    E1n
        2
    E1n  
       6 天前
    '''
    Error response from daemon: error parsing HTTP 403 response body: invalid character '<' looking for beginning of value: "<html>\r\n<head><title>403 Forbidden</title></head>\r\n<body>\r\n<center><h1>403 Forbidden</h1></center>\r\n<hr><center>nginx/1.20.1</center>\r\n</body>\r\n</html>\r\n"
    ''' 请问只能默认 80 端口,不能修改端口吗
    ebi5oowiiy1llo
        3
    ebi5oowiiy1llo  
       6 天前 via Android   ❤️ 1
    原来作者也在这里呀,除了解析劫持还有共享存储也很妙,不过我设备多没弄劫持,直接泛域名解析正经用了,还加了个 ui 方便删镜像
    raysonlu
        4
    raysonlu  
       6 天前
    为何不用 nexus?
    mosby
        5
    mosby  
    OP
       6 天前
    @E1n 只能用 80 或者 443 ,其他端口的话镜像 tag 就不一样了,要改到 443 端口的话,理论上自签名一个泛域名证书,nginx.conf 里加上 ssl 配置,客户端信任 ca 证书应该就行了
    dream10201
        6
    dream10201  
       6 天前
    话说都上 V2EX 了,配置个代理不行吗?
    我用的 podman ,附上配置
    # cat /etc/containers/containers.conf.d/proxy.conf
    [engine]
    env=["HTTPS_PROXY=http://127.0.0.1:10809","HTTP_PROXY=http://127.0.0.1:10809"]
    [containers]
    http_proxy = false
    mosby
        7
    mosby  
    OP
       6 天前
    统一回复一下:
    @dream10201
    这个使用场景不一样,全走代理只适合个人开发电脑或者节点很少的情况,节点很多的情况全都走代理速度慢又费流量

    另外就是某些离线环境,这个镜像仓库缓存好之后把整个目录打包也可以离线使用

    4 楼说的 nexus ,可以仔细看下仓库的内容,这个主要是用 nginx 域名分流以及劫持了 dns ,镜像 tag 是保持不变的
    比如要部署 kubeflow 之类的一些组件是可以直接使用默认配置,不需要任何改动

    还有 2 楼的端口问题,现在更新了一下默认 443 端口了,加了 ssl 证书生成脚本,只需要客户端信任 ca 证书
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2991 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:52 · PVG 21:52 · LAX 06:52 · JFK 09:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.