为下载docker镜像加速,配置国内Registry Mirror

Docker是Docker.Inc公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议。通过分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运维工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开销的情 况下提供资源隔离的应用运行环境。由于众多新颖的特性以及项目本身的开放性,Docker在不到两年的时间里迅速获得诸多IT厂商的参与,其中更是包括 Google、Microsoft、VMware等业界行业领导者。同时,Docker在开发者社区也是一石激起千层浪,许多如我之码农纷纷开始关注、学 习和使用Docker,许多企业,尤其是互联网企业,也在不断加大对Docker的投入,大有掀起一场容器革命之势。

Docker镜像命名解析

镜像是Docker最核心的技术之一,也是应用发布的标准格式。这也是Docker里面比较容易令人混淆的一块概念:Registry,Repository, Tag and Image。Registry存储镜像数据,并且提供拉取和上传镜像的功能。Registry中镜像是通过Repository来组织的,而每个Repository又包含了若干个Image。

  • Registry包含一个或多个Repository
  • Repository包含一个或多个Image
  • Image用GUID表示,有一个或多个Tag与之关联

docker pull在哪里指定Registry呢?假如本地搭建了localhost:5000的私有Registry。拉取镜像的完整命令:

1
docker pull localhost:5000/ubuntu:latest

加速方案

方案一
就是搭建或者使用现有的私有Registry,通过定期和Docker Hub同步热门的镜像,私有Registry上保存了一些镜像的副本,然后大家可以通过docker pull private-registry.com/user-name/ubuntu:latest, 从这个私有Registry上拉取镜像。因为这个方案需要定期同步Docker Hub镜像,因此它比较适合于使用的镜像相对稳定,或者都是私有镜像的场景。而且用户需要显式的映射官方镜像名称到私有镜像名称,私有Registry更多被大家应用在企业内部场景。私有Registry部署也很方便,可以直接在Docker Hub上下载Registry镜像。

方案二
是使用Registry Mirror,它的原理类似于缓存,如果镜像在Mirror中命中则直接返回给客户端,否则从存放镜像的Registry上拉取并自动缓存在Mirror 中。最酷的是,是否使用Mirror对Docker使用者来讲是透明的,也就是说在配置Mirror以后,大家可以仍然输入docker pull ubuntu来拉取Docker Hub镜像,除了速度变快了,和以前没有任何区别。

配置Registry Mirror

使用DaoCloud国内加速器下载,配置:

Linux
该脚本可以将 –registry-mirror 加入到你的 Docker 配置文件 /etc/default/docker 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。有些是修改/etc/docker/daemon.json

1
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://c1a47088.m.daocloud.io

MacOS
右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中加入下面的镜像地址:

1
http://c1a47088.m.daocloud.io

Window
在桌面右下角状态栏中右键 docker 图标,修改在 Docker Daemon 标签页中的 json ,把下面的地址:

1
http://c1a47088.m.daocloud.io

现在可以愉快的下载镜像了。