docker越来越炙手可热,如果你的团队已经准备开始使用docker,那么私有仓库是必不可少的东西,首先是可以帮助你加快从服务器pull镜像的速度,其次也可以帮助你存放私有的镜像,本文主要为大家介绍如何从公用服务器上讲开放的images备份到本地私有服务器上。本文中以index中的ubuntu镜像举例从官方的Index服务器上下载ubuntu镜像dockerpullubuntu查看现有的imagesREPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEubuntu13.109f676bd305a45weeksago178MBubuntusaucy9f676bd305a45weeksago178MBubunturaringeb601b8965b85weeksago166.5MBubuntu13.04eb601b8965b85weeksago166.5MBubuntu12.105ac751e8d6235weeksago161MBubuntuquantal5ac751e8d6235weeksago161MBubuntu10.049cc9ea5ea5405weeksago180.8MBubuntulucid9cc9ea5ea5405weeksago180.8MBubuntu12.049cd978db300e5weeksago204.4MBubuntulatest9cd978db300e5weeksago204.4MBubuntuprecise9cd978db300e5weeksago204.4MB一般来讲,我们会使用最新版本的ubuntu,大家可以发现多个TAG对应同一个image,Tag只是一个名字而已。为需要push到私有registry的image打tagdockertag9cd978db300erd-server:5000/ubuntu我们可以执行dockerimages查看效果REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEubuntu13.109f676bd305a45weeksago178MBubuntusaucy9f676bd305a45weeksago178MBubunturaringeb601b8965b85weeksago166.5MBubuntu13.04eb601b8965b85weeksago166.5MBubuntu12.105ac751e8d6235weeksago161MBubuntuquantal5ac751e8d6235weeksago161MBubuntu10.049cc9ea5ea5405weeksago180.8MBubuntulucid9cc9ea5ea5405weeksago180.8MBubuntu12.049cd978db300e5weeksago204.4MBubuntulatest9cd978db300e5weeksago204.4MBubuntuprecise9cd978db300e5weeksago204.4MBrd-server:5000/ubuntulatest9cd978db300e5weeksago204.4MB将ubuntupush到私有registrydockerpushrd-server:5000/ubuntu如何将ubuntu的所有分支都镜像到自己的私有仓库?1.先打TAG,把需要的版本打上标签,然后进行推送语句大概是这个样子的:dockertageb601b8965b8rd-server:5000/ubuntu:raringdockertageb601b8965b8rd-server:5000/ubuntu:13.04dockertag9f676bd305a4rd-server:5000/ubuntu:saucydockertag9f676bd305a4rd-server:5000/ubuntu:13.10dockertag9cd978db300erd-server:5000/ubuntu:precisedockertag9cd978db300erd-server:5000/ubuntu:latestdockertag9cd978db300erd-server:5000/ubuntu:12.04dockertag9cc9ea5ea540rd-server:5000/ubuntu:luciddockertag9cc9ea5ea540rd-server:5000/ubuntu:10.04dockertag5ac751e8d623rd-server:5000/ubuntu:quantaldockertag5ac751e8d623rd-server:5000/ubuntu:12.10开始推送dockerpushrd-server:5000/ubuntu如果返回的内容的最后一行是下面这个样子的2014/03/1408:22:14push:}请反复执行,没错,不要怀疑,请循环一直反复执行下去dockerpullrd-server:5000/ubuntu直到不再出现push:}的字样不知道这是docker的BUG还是本身设计是这样的,需要反复多次push才能将完整的tag推送到privateregistry里,否则在客户端下载的时候总会提示某些image找不到,个人猜测可能是这么设计的,因为dockerimage比较大,而一个repo会有很多的块文件,每次push的时候只Push一个块,好了,猜测就道这,活还是得干,所以,写个脚本解决手工的问题吧。