在一些网络环境下,docker pull 必会卡的死死的。于是大家想了很多办法:
- 给 docker daemon 挂代理服务器
- 找一个靠谱的 DockerHub 代理(好想现在也没什么太稳定的了)
- 通过大慈善家 Cloudflare 自建一个 DockerHub 代理
原文作者做了一个 Chrome 扩展 ,给大家提供了一个新的思路:
通过浏览器代理直接下载容器镜像文件 tar 文件,然后使用 docker load 导入镜像。
在扩展弹出的窗口里面直接输入镜像名称即可,除了 DockerHub 外, ghcr.io 等也都是支持的!
Chrome 商店地址: https://chromewebstore.google.com/detail/docker-image-downloader/dfpojffmnkiglpjpjodlpmoejdcfobnd
下载器的原理是这样的:
根据 Docker Registry HTTP API 来模拟 docker pull 的行为 将下载下来的 layers 根据 docker load 支持的格式组装起来,配合 tar-stream 直接流式打包 chrome extension v3 支持 service-worker ,service-worker 支持 Fetch Event 可以让用户在浏览器的下载器中直接下载上一步流式打包的 tar 文件