現(xiàn)在dockerhub沒有在國(guó)內(nèi)部署,所以國(guó)內(nèi)訪問dockerhub的時(shí)候也是非常的慢砰苍,就算使用了vpn也不一定有很好的效果,所以我們采用以下幾種方式來加速。
自己搭建docker distribution
自己搭建docker distribution(V1叫registry)瓜浸,這個(gè)的前提是你需要下載到你需要的常用的鏡像到本地再push到你的本地distribution澳淑。操作相對(duì)比較復(fù)雜,但是可以自己管理docker的鏡像插佛,這里如果用的話建議搭建portus(https://github.com/SUSE/Portus
)或者h(yuǎn)arbor(https://github.com/vmware/harbor
)這兩個(gè)倉庫多擴(kuò)展了權(quán)限認(rèn)證杠巡,安全,dashboard等一些功能雇寇,用起來相對(duì)比較順暢也方便氢拥。
采用docker registry mirror加速
Registry mirror原理:
Docker Hub的鏡像數(shù)據(jù)分為兩部分:index數(shù)據(jù)和registry數(shù)據(jù)。前者保存了鏡像的一些元數(shù)據(jù)信息锨侯,數(shù)據(jù)量很心酆!;后者保存了鏡像的實(shí)際數(shù)據(jù)囚痴,數(shù)據(jù)量比較大叁怪。平時(shí)我們使用docker pull命令拉取一個(gè)鏡像時(shí)的過程是:先去index獲取鏡像的一些元數(shù)據(jù),然后再去registry獲取鏡像數(shù)據(jù)深滚。
所謂registry mirror就是搭建一個(gè)registry奕谭,然后將docker hub的registry數(shù)據(jù)緩存到自己本地的registry。整個(gè)過程是:當(dāng)我們使用docker pull去拉鏡像的時(shí)候痴荐,會(huì)先從我們本地的registry mirror去獲取鏡像數(shù)據(jù)血柳,如果不存在,registry mirror會(huì)先從docker hub的registry拉取數(shù)據(jù)進(jìn)行緩存生兆,再傳給我們难捌。而且整個(gè)過程是流式的,registry mirror并不會(huì)等全部緩存完再給我們傳鸦难,而且邊緩存邊給客戶端傳根吁。
對(duì)于緩存,我們都知道一致性非常重要合蔽。registry mirror與docker官方保持一致的方法是:registry mirror只是緩存了docker hub的registry數(shù)據(jù)婴栽,并不緩存index數(shù)據(jù)。所以我們pull鏡像的時(shí)候會(huì)先連docker hub的index獲取鏡像的元數(shù)據(jù)辈末,如果我們r(jià)egistry mirror里面有該鏡像的緩存愚争,且數(shù)據(jù)與從index處獲取到的元數(shù)據(jù)一致,則從registry mirror拉燃菲浮轰枝;如果我們的registry mirror有該鏡像的緩存,但數(shù)據(jù)與index處獲取的元數(shù)據(jù)不一致组去,或者根本就沒有該鏡像的緩存鞍陨,則先從docker hub的registry緩存或者更新數(shù)據(jù)。【摘抄自: http://time-track.cn/deploy-registry-mirror.html
】诚撵。
配置docker:
在本機(jī)的docker上修改配置缭裆,不同的操作系統(tǒng)修改的目錄是不一致的,這里采用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