1. 關於docker Registrypython
官網Docker hubgit
Registry在github上有兩份代碼:老代碼庫和新代碼庫。老代碼是採用python編寫的,存在pull和push的性能問題,出到0.9.1版本以後就標誌爲deprecated,再也不繼續開發。從2.0版本開始就到在新代碼庫進行開發,新代碼庫是採用go語言編寫,修改了鏡像id的生成算法、registry上鏡像的保存結構,大大優化了pull和push鏡像的效率。github
2. registry部署算法
運行一下命令獲取Registry,目前最新版本爲2.3.1docker
docker pull registry:2.3.1
啓動一個容器瀏覽器
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.3.1
Registry服務默認會將上傳的鏡像保存在容器的/var/lib/registry,咱們將主機的/opt/registry目錄掛載到該目錄,便可實現將鏡像保存到主機的/opt/registry目錄了。tcp
運行docker ps看一下容器狀況性能
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2355477e3c21 registry:2.3.1 "/bin/registry /etc/d" 3 hours ago Up 3 hours 0.0.0.0:5000->5000/tcp registry
說明咱們已經啓動了registry服務,打開瀏覽器輸入http://127.0.0.1:5000/v2,出現下面狀況說明registry運行正常優化
docker tag registry:2.3.1 127.0.0.1:5000/registry:2.3.1
而後查看如下本地的鏡像,使用指令spa
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE 127.0.0.1:5000/registry 2.3.1 60e8332136e4 3 months ago 224.5 MB registry 2.3.1 60e8332136e4 3 months ago 224.5 MB
將鏡像push到本地鏡像庫
docker push 127.0.0.1:5000/registry:2.3.1