相信在国内用过 Docker 的同学都有过被 GFW Fxxk 的经历,有的同学可能很溜可以很快的解决,但是相信不能很顺利得解决的同学还是偏多的,例如我。在使用 Docker 的时候,GFW 是一件让人很崩溃的存在,我先说说我的一些经历吧,一般来说,大家的梯子是 55 或者微屁恩比较多,我最初是使用微屁恩的,其实平时使用的时候还不错,非常稳定,但是一和 Docker 配合起来之后,一切都变得很糟糕了,因为微屁恩的原理是在本地创建了一个虚拟网卡,然后走的是虚拟网卡;而 Docker 也是类似的原理,这就导致 Docker 的流量不会走微屁恩,所以呵呵哒。

对于 55 来说好一些,我们可以通过配置 Docker 的 Proxy 选项,但是,一般来说都是需要将 55 协议转成 HTTP 协议的,这个转换在 Mac 上很好办,客户端就自带这个功能;但是一旦上了 CentOS(我的常用 Linux 版本),就没有那么好用的工具了,当然,网友推荐 pilipo 或者 privoxy,这两款都不错,但是毕竟是多了一道工具,除了安装配置 55local 之外,我还需要配置 polipo,而且修改配置只有还要更新一下,所以体验极差。

即使在正确得使用了梯子之后,很多时候因为 GFW 的存在还有梯子的自身质量问题,我 pull 一些 image 的速度还是很慢的,一两百K 的速度很常见,有的时候甚至更低,所以,在这样的背景下,我尝试寻找国内的 registry 进行加速。当然,我这里的加速是指无论在家还是在工作中都是可以使用的,工作中我认为搭建自己的 Registry 比使用别人的更好。

国内 Docker Registry

如果你现在去 Google 上搜索国内的 Registry 设置教程的话,可能第一页还有不少推荐网易镜像的,但是,很遗憾的是,它已经崩了,莫得用了,所以可以忽略哪些答案了。就我的体验来说,目前有两个源我是比较推荐的,分别是阿里云Docker 中国官方镜像,怎么选就看大家个人了,下面我就分别介绍一下如何设置:

阿里云镜像设置

阿里云的镜像没法直接用通用的地址访问,不同的人需要获取不同的地址,当然,你要一个地址多个人用应该也没啥大毛病,但保不齐哪天地址就失效了。

  1. 申请镜像地址

    阿里云的地址是需要自己去申请的,申请方式为登录容器 Hub 服务的控制台,然后选择 镜像加速器

然后就可以直接得看到你的专属地址了,下面还有各种不同环境的设置方式:

对于 CentOS 来说,直接修改 /etc/docker/daemon.json 配置,然后再重启 Docker 即可。

中国官方镜像

相比之下,中国官方镜像就简单很多了,直接修改 /etc/docker/daemon.json,内容为:

$ cat /etc/docker/daemon.json
{
    "registry-mirrors": ["https://registry.docker-cn.com"]
}

重新启动 Docker ,

$ systemctl docker restart

现在尝试一下拉取镜像,你会发现速度快多了。