Docker 201 - Registry Mirror

docker

在墙内,想真正用起来 Docker,第一步就是一件困难的事情,无法正常下载,然后就是无法正常 pull image,然后 pull 未实现断点续传,所以 VPN 也常 timeout。直到发现 DaoCloud,它将 Docker Hub 中的 Image 利用 1.3.2 后的 registry-mirror 做了一次国内 Cache,才算有个不错的方案。

Docker 1.x? 中直接支持了 Registry Mirror,只需要简单的配置即可。

它的原理类似于缓存,如果镜像在 Mirror 中命中则直接返回给客户端,否则从存放镜像的 Registry 上拉取并自动缓存在 Mirror 中。是否使用 Mirror 对 Docker 使用者来讲是透明的,也就是说在配置 Mirror 以后,依然是输入 docker pull ubuntu 来拉取 Docker Hub 镜像,使用上没有区别。


安装或升级Docker

高速安装 Docker:

1
2
$ curl -sSL https://get.daocloud.io/docker | sh
# Docker version 1.12.3, build 6b644ec


配置 Docker 加速器

加速利用的是 Docker 1.3.2 后提供的 Registry 功能,在国内做了一次 Cache。

- 配置方法

The default location of the configuration file on Linux is /etc/docker/daemon.json. The –config-file flag can be used to specify a non-default location.

最新的方式是修改 /etc/docker/daemon.json

1
{"registry-mirrors": ["http://(id).m.daocloud.io"]}

以前用来修改的方式已经失效了,会导致 docker service 无法重启:

Ubuntu 中修改 Docker 的配置文件 /etc/default/docker 文件,添加 registry-mirror 项。


尽情享受Docker加速器

Docker加速器使用时不需要任何额外操作。就像这样下载官方Ubuntu镜像

1
docker pull ubuntu

Question:

- 如何知道是否从 registry-mirror 拉取?

在 pull image 结束时,系统会提示 mirror 的路径(不过还是不方便检验问题):

1
2
3
4
5
6
7
8
9
root@iZ:~# docker pull rails
Using default tag: latest
latest: Pulling from library/rails
722c7f393bc4: Pulling fs layer
722c7f393bc4: Pulling image (latest) from docker.io/library/rails, mirror: http://(_id).m.daoclou722c7f393bc4: Download complete
902b87aaaec9: Download complete
Status: Downloaded newer image for rails:latest

REF::