V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jinnrry
V2EX  ›  Docker

顶不住了,快疯了, Mac 上使用 colima 安装 docker 到底怎么才能改源啊

  •  
  •   Jinnrry · 8 天前 · 660 次点击

    在公司使用 docker ,由于 docker-desktop 授权问题,换到 colima 。于是便开始了折磨

    1 、安装 colima 官方的安装方式,使用 brew 安装完 colima 和 docker client 非常流程,毫无卡点

    2 、安装完后测试 docker ps 、docker images 等命令,都没有问题。非常开心,居然这么顺利就换掉 docker-desktop 了

    3 、docker pull 发现拉不下来镜像。没事,这个我熟,熟练的修改~/.docker/daemon.json,改为源后,结果发现 docker pull 依然走官方源

    4 、搜了下 colima 原理,原来他底层就是一个虚拟机,那我懂了,得去他的虚拟机里面改配置文件。按照网上说的,通过colima ssh顺利进入虚拟机,然后准备改配置,结果发现这个虚拟机里面没有vim等命令,没法改配置。

    5 、看了下虚拟机版本,使用的是 ubuntu 。那就简单了,闭着眼睛敲了了个sudo apt update && apt install vim 。敲我之后发现,tmd 虚拟机内 ubuntu 的源也连不通。没事,这我也熟,闭着眼睛覆盖掉/etc/apt/source.list。覆盖完之后发现 apt 还是用不了,又看了下source.list的原文件,上面写着Ubuntu sources have moved to the /etc/apt/sources.list.d/ubuntu.sources ,这好像还是用的 ubuntu clound 版本,于是又看了下/etc/apt/sources.list.d/ubuntu.sources,好像是模板生成的,上面注释写着要改镜像模板,我去你大爷的,我哪知道你模板在哪啊

    6 、喝杯水冷静了一些,想了想,我是为了改 docker 配置啊,费这么大劲跟 apt 较什么劲啊。于是秀一波操作echo 'xxxxx' > ~/.docker/daemon.json 成功修改配置文件。感叹还好自己基本功扎实,没有 vim vi 这些编辑工具,照样有办法改配置文件。

    7 、改为配置文件后,当然得重启了,敲下一个colima restart,然后dokcer info一看,我去,没生效啊。再进虚拟机一看,你大爷的,配置文件给我还原了。

    8 、又去网上一通搜索,网上说要改~/.colima/default/colima.yaml配置,于是又照着网上说的,把 docker 源写到这里面,写完发现colima start根本起不来了,又费了九牛二虎之力,改了半天格式,好不容易把 colima 虚拟机启动起来了,但是 docker pull 还他大爷走的官方源

    9 、又在网上一通搜索,网上又有人说要通过colima start --edit编辑配置文件,于是又照着改,改了半天发现虚拟机又起不来了。colima start --edit~/.colima/default/colima.yaml这两个文件反复核对反复改,改了无数遍,虚拟机终于起来了。docker info里面的registry_mirrors也变了。激动得不行,感叹终于没问题了。结果他大爷的一拉镜像,还是走的官方源。

    10 、反复检查我配置的源,检查了无数遍,我又拿服务器去测试了一下,源肯定是可以用的,服务器上使用这个源都是正常的。而且这个源肯定也是没有被墙的,本地 ping 、tcpping 、telnet 各种花式测试,都是通的。

    11 、濒临崩溃,不知所以,怀疑人生,上 v 站发个帖,哪个大哥走过路过帮忙看看

    12 、md ,狗屎玩意,抬头一看时间,8 点了。瞎几把搞了一天,需求一行代码都还没写,收拾收拾下班,明天再来

    第 1 条附言  ·  7 天前
    太 tm 无语了。为了解决这问题,深入研究了一遍 docker 网络请求原理,以及 colima 底层实现原理。终于搞明白问题了。

    感谢这 2 位,网上 95%的内容都是抄的,这里才是真正有用的:

    https://voxsay.com/posts/china-docker-registry-proxy-guide/

    https://www.jinnll.xyz/archives/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86hub

    主要问题:

    1 、根据第一个 blog 中的 docker 网络请求流程可知,一次 docker pull 涉及 3 个域名,分别是 registy-1.docker.ioauth.docker.ioproduction.cloudflare.docker.com

    2 、以前 dockerhub 只有 registy-1.docker.io 这个域名被封,因此以前各种反代方案中,都只反代了这一个域名。但是现在 auth.docker.io 也被封了。从这个网络请求流程中就能看到,这时没法拿到 token ,因此没法继续下去。(这时如果你显示指定域名进行 docker pull [proxy]/library/helloword 会报错 auth.docker.io 无法连接)

    3 、解决方案是第二 blog ,自建的反代服务器需要增加 auth.docker.io 的代理。

    最后,感谢上面 2 位的分享。

    WTF GFW
    9 条回复    2025-01-10 14:53:28 +08:00
    doghappy
        1
    doghappy  
       8 天前 via Android
    colima start --edit
    然后改下配置
    docker:
    registry-mirrors:
    - https://MY_REGISTRY_MIRROR

    详情进 https://github.com/abiosoft/colima/issues/225#issuecomment-1204906341
    izoabr
        2
    izoabr  
       8 天前
    要不试试用 orbstack
    Jinnrry
        3
    Jinnrry  
    OP
       8 天前
    @doghappy 没用,这个配置我改了一万遍了。还是走官方源去拉镜像

    docker pull nginx
    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)
    Jinnrry
        4
    Jinnrry  
    OP
       8 天前
    @izoabr 看了一眼,官网写着

    Free to try, no card required
    Always free for personal use

    商用 8 刀一个月
    lucasdev
        5
    lucasdev  
       8 天前
    啊,不行吗。我同样的操作是正常使用的

    brew install colima

    vim ~/.colima/default/colima.yaml

    将 docker:{} 改成
    docker:
    registry-mirrors:
    - https://<your-mirror>

    然后执行 docker info ,就能看到生效了。docker pull 什么都正常
    Registry Mirrors:
    https://<your-mirror>
    doghappy
        6
    doghappy  
       7 天前 via Android
    @Jinnrry 我前几天刚试过,一次生效,可能你把环境搞污染了
    doghappy
        7
    doghappy  
       7 天前 via Android
    实在不行,你 pull 镜像时带上 URL ,手动 pull
    Jinnrry
        8
    Jinnrry  
    OP
       7 天前
    @lucasdev
    @doghappy #1 我知道原因了,我加了我自己的反代源,还加了 10 多个公开的 docker 源,特喵的竟然没有一个能用的。这些源个把月前都还是能用的。太离谱了
    Jinnrry
        9
    Jinnrry  
    OP
       7 天前
    @doghappy #7 具体原因加到 append 里面了,WTF GFW
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2717 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 05:12 · PVG 13:12 · LAX 21:12 · JFK 00:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.