holdtom
将ubuntu push到私有registrydocker push rd-server:5000/ubuntu如何将ubuntu的所有分支都镜像到自己的私有仓库?1.先打TAG,把需要的版本打上标签,然后进行推送语句大概是这个样子的:docker tag eb601b8965b8 rd-server:5000/ubuntu:raringdocker tag eb601b8965b8 rd-server:5000/ubuntu:13.04docker tag 9f676bd305a4 rd-server:5000/ubuntu:saucydocker tag 9f676bd305a4 rd-server:5000/ubuntu:13.10docker tag 9cd978db300e rd-server:5000/ubuntu:precisedocker tag 9cd978db300e rd-server:5000/ubuntu:latestdocker tag 9cd978db300e rd-server:5000/ubuntu:12.04docker tag 9cc9ea5ea540 rd-server:5000/ubuntu:luciddocker tag 9cc9ea5ea540 rd-server:5000/ubuntu:10.04docker tag 5ac751e8d623 rd-server:5000/ubuntu:quantaldocker tag 5ac751e8d623 rd-server:5000/ubuntu:12.10开始推送docker push rd-server:5000/ubuntu如果返回的内容的最后一行是下面这个样子的2014/03/14 08:22:14 push: }请反复执行,没错,不要怀疑,请循环一直反复执行下去docker pull rd-server:5000/ubuntu直到不再出现 push:}的字样不知道这是docker的BUG还是本身设计是这样的,需要反复多次push才能将完整的tag推送到privateregistry里,否则在客户端下载的时候总会提示某些image找不到,个人猜测可能是这么设计的,因为dockerimage比较大,而一个repo会有很多的块文件,每次push的时候只Push一个块,好了,猜测就道这,活还是得干,所以,写个脚本解决手工的问题吧。#!/bin/sh##Copyright (c) 2014 ZhengXujin xujinzheng@gmail.com#server="127.0.0.1:5000"index_repo_name="username/ubuntu"private_repo_name="ubuntu"echo "\n"echo " ## ."echo " ## ## ## =="echo " ## ## ## ## ==="echo " /""""""""""""""""\___/ ==="echo " ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~"echo " \______ o __/"echo " \ \ __/"echo " \____\______/"echo "\n"idx=0is_continue=1docker images|grep -q "$server/$private_repo_name"if [[ $? -ne 0 ]]; thendocker images|grep $index_repo_name|awk -F" " '{printf("docker tag %s %s/%s:%s\n",$3,"'$server'","'$private_repo_name'",$2)}'|bashfiwhile [ $is_continue -eq 1 ]dodocker push $server/$private_repo_nameis_continue=$?let idx=$idx+1echo "$(tput setaf 1)continue push, $idx times pushed. $(tput sgr