现在dockerhub没有在国内部署,所以国内访问dockerhub的时候也是非常的慢,就算使用了vpn也不一定有很好的效果,所以我们采用以下几种方式来加速。
自己搭建docker distribution
自己搭建docker distribution(V1叫registry),这个的前提是你需要下载到你需要的常用的镜像到本地再push到你的本地distribution。操作相对比较复杂,但是可以自己管理docker的镜像,这里如果用的话建议搭建portus(https://github.com/SUSE/Portus
)或者harbor(https://github.com/vmware/harbor
)这两个仓库多扩展了权限认证,安全,dashboard等一些功能,用起来相对比较顺畅也方便。
采用docker registry mirror加速
Registry mirror原理:
Docker Hub的镜像数据分为两部分:index数据和registry数据。前者保存了镜像的一些元数据信息,数据量很小;后者保存了镜像的实际数据,数据量比较大。平时我们使用docker pull命令拉取一个镜像时的过程是:先去index获取镜像的一些元数据,然后再去registry获取镜像数据。
所谓registry mirror就是搭建一个registry,然后将docker hub的registry数据缓存到自己本地的registry。整个过程是:当我们使用docker pull去拉镜像的时候,会先从我们本地的registry mirror去获取镜像数据,如果不存在,registry mirror会先从docker hub的registry拉取数据进行缓存,再传给我们。而且整个过程是流式的,registry mirror并不会等全部缓存完再给我们传,而且边缓存边给客户端传。
对于缓存,我们都知道一致性非常重要。registry mirror与docker官方保持一致的方法是:registry mirror只是缓存了docker hub的registry数据,并不缓存index数据。所以我们pull镜像的时候会先连docker hub的index获取镜像的元数据,如果我们registry mirror里面有该镜像的缓存,且数据与从index处获取到的元数据一致,则从registry mirror拉取;如果我们的registry mirror有该镜像的缓存,但数据与index处获取的元数据不一致,或者根本就没有该镜像的缓存,则先从docker hub的registry缓存或者更新数据。【摘抄自: http://time-track.cn/deploy-registry-mirror.html
】。
配置docker:
在本机的docker上修改配置,不同的操作系统修改的目录是不一致的,这里采用centos7.1的修改方式。修改文件/etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=http://abcd1234.m.daocloud.io'
options后面新增--registry-mirror=http://abcd1234.m.daocloud.io
。重启一下docker即可.
service docker restart