# 構建私有Registry
從容器運行Registry
docker run -d --name registry -p 5000:5000 registry:2
為鏡像打標簽
docker tag ttlinux/php-fpm:5.4 10.175.189.38:5000/ttlinux/php-fpm:5.4
將鏡像推送到新的Registry
docker push 10.175.189.38:5000/ttlinux/php-fpm:5.4
> PS: 推送到私有倉庫,需要保證以下兩點:
1. 配置Docker 私有倉庫地址
2. Docker 客戶端登陸私有倉庫地址
docker login 10.175.189.38:5000
查看私有倉庫單個鏡像文件
curl -X GET http://10.175.189.38:5000/v2/base/tomcat/tags/list
curl -X DELETE http://10.175.189.38:5000/v2/base/rpc/manifests/1.0-7u80
# 企業級Registry開源項目Harbor架構簡介
### Harbor項目
VMware公司最近開源了企業級Registry項目Harbor,其的目標是幫助用戶迅速搭建一個企業級的Docker registry 服務。它以Docker公司開源的registry 為基礎,提供了管理UI, 基于角色的訪問控制(Role Based Access Control),AD/LDAP集成、以及審計日志(Audit logging) 等企業用戶需求的功能,同時還原生支持中文,對廣大中國用戶是一個好消息。本文將介紹Harbor 項目的主要組件,并闡述Harbor的工作原理。
### 架構介紹
#### 主要組件
Harbor在架構上主要由五個組件構成:
- Proxy:Harbor的registry, UI, token等服務,通過一個前置的反向代理統一接收瀏覽器、Docker客戶端的請求,并將請求轉發給后端不同的服務。
- Registry: 負責儲存Docker鏡像,并處理docker push/pull 命令。由于我們要對用戶進行訪問控制,即不同用戶對Docker image有不同的讀寫權限,Registry會指向一個token服務,強制用戶的每次docker pull/push請求都要攜帶一個合法的token, Registry會通過公鑰對token 進行解密驗證。
- Core services: 這是Harbor的核心功能,主要提供以下服務:
- UI:提供圖形化界面,幫助用戶管理registry上的鏡像(image), 并對用戶進行授權。
- webhook:為了及時獲取registry 上image狀態變化的情況, 在Registry上配置webhook,把狀態變化傳遞給UI模塊。
- token 服務:負責根據用戶權限給每個docker push/pull命令簽發token. Docker 客戶端向Regi?stry服務發起的請求,如果不包含token,會被重定向到這里,獲得token后再重新向Registry進行請求。
- Database:為core services提供數據庫服務,負責儲存用戶權限、審計日志、Docker image分組信息等數據。
- Log collector:為了幫助監控Harbor運行,負責收集其他組件的log,供日后進行分析。
各個組件之間的關系如下圖所示:

### 實現
Harbor的每個組件都是以Docker 容器的形式構建的,因此很自然地,我們使用Docker Compose來對它進行部署。[Github項目地址](https://github.com/vmware/harbor/blob/master/docs/installation_guide.md)
[國內鏡像下載地址](http://harbor.orientsoft.cn/)
- 第一章 Docker核心技術(一)
- 第一章 Docker核心技術(二)
- 第一章 Docker核心技術(三)
- 第一章 Docker核心技術(四)
- 第二章 Docker 入門
- 第三章 使用docker鏡像
- 第四章 實戰應用使用Docker構建LNMP環境 (一)
- 第四章 實戰應用使用Docker構建LNMP環境 (二)
- 第四章 實戰應用使用Docker構建LNMP環境 (三)
- 第五章 構建企業級Harbor-Registry
- 第六章 構建Docker應用發布系統(一)
- 第六章 構建Docker應用發布系統(二)
- 第六章 構建Docker應用發布系統(三)
- 第六章 構建Docker應用發布系統(四)