轉:http://blog.csdn.net/felix_yujing/article/details/51564739python
新版 registry v2對鏡像存儲格式進行了從新設計,而且和舊版還不兼容。registry v2是由go語言開發,docker從1.6版本開始支持registry v2,以前python開發的老版registry在網上已被標爲廢棄了(沒有維護更新,但也能夠用)。
以前在測試環境搭建了一個老版的registry,用了也比較久了。爲了跟上技術的腳步,也準備從此使用新版registry v2。因爲對舊版是不兼容的,因此以前倉庫的數據目錄還不能直接拿來掛載,只好從新作個新的,鏡像只好等之後慢慢再放上去了。下面對我此次配置的步驟簡單的介紹一下。
0. 服務器環境
本次使用centos7.1的操做系統,服務器IP假設爲:192.168.0.100
預先裝好docker服務,操做以下:docker
1. 獲取最新的registry的容器
瞭解到目前最新版爲2.4.1,因而直接使用docker pull命令從公用倉庫去拉便可json
2. 運行registry:2.4.1容器
這裏須要注意的是新registry倉庫數據目錄的位置。以前老版的位置是/tmp/registry,hub.docker.com上的演示命令裏寫的是/tmp/registry-dev,其實這個不對。試驗證實,新registry的倉庫目錄是在/var/lib/registry,因此運行時掛載目錄須要注意。centos
-v選項指定將/opt/registry-var/目錄掛載給/var/lib/registry/
當使用curl http://192.168.0.100:5000/v2/_catalog能看到json格式的返回值時,說明registry已經運行起來了。
3. 修改配置文件以指定registry地址
上面registry雖然已經運行起來了,可是若是想用push命令上傳鏡像是會報錯的,須要在配置文件中指定registry的地址。在/etc/sysconfig/docker文件中添加一下配置:安全
爲了配置簡單,省去安全相關的配置,這裏使用--insecure-registry選項。
修改配置文件後,必定要重啓docker服務才能生效,因此:服務器
這時再push就能夠上傳鏡像到所搭建的registry倉庫了。須要注意的是,上傳前要先給鏡像tag一個192.168.0.100:5000/爲前綴的名字,這樣才能在push的時候存到私庫。curl
4. 配置帶用戶權限的registry
到上面爲止,registry已經可使用了。若是想要控制registry的使用權限,使其只有在登陸用戶名和密碼以後才能使用的話,還須要作額外的設置。
registry的用戶名密碼文件能夠經過htpasswd來生成:測試
上面這條命令是爲felix用戶名生成密碼爲felix的一條用戶信息,存在/opt/registry-var/auth/htpasswd文件裏面,文件中存的密碼是被加密過的。
使用帶用戶權限的registry時候,容器的啓動命令就跟上面不同了,將以前的容器停掉並刪除,而後執行下面的命令:加密
這時,若是直接想查看倉庫信息、pull或push都會出現權限報錯。必須先使用docker login 命令來登陸私有倉庫:url
根據提示,輸入用戶名和密碼便可。若是登陸成功,會在/root/.docker/config.json文件中保存帳戶信息,這樣就能夠繼續使用了。