使用新浪雲存儲搭建Docker私有倉庫服務

最近使用Docker的同窗愈來愈多。python

使用Docker的時候須要瞭解Registry服務 - 即鏡像存儲服務。git

Registry是一個管理Docker鏡像的服務,當使用Docker的Push, Pull等操做時實際上都是與Registry服務進行交互,相似本地Git和遠程Git Repository的關係。github

DockerHub做爲默認的Registry服務提供很是多的公共鏡像,而且爲每一個註冊者提供10個私有Repository。docker

早些時候在國內訪問 DockerHub (前身域名爲 index.docker.io) 常常被牆,須要使用代理訪問,後來DockerHub改用AWS提供的CloudFront做爲CDN服務解決了這個問題,訪問速度也有了必定的改善。ubuntu

咱們能不能本身作一個私有的Registry服務?這樣有幾方面的好處。後端

  1. 與業務相關的鏡像可使用私有的Registry,提升安全性。
  2. 選擇穩定的後端存儲服務,能夠提升數據可靠性,而且訪問速度也相對很快。

實際上Docker官方已經有一個開源版Registry服務,Python寫的。其後端存儲方案有兩個。安全

  1. 本地存儲,適合作開發測試環境用,不建議在生產環境使用。
  2. AWS S3服務,國內訪問速度不是很好。

能不能使用國內存儲服務(如新浪雲存儲),作一個私有Registry呢?性能

在進一步瞭解的過程當中,筆者瞭解到實際上Registry服務自己提供Driver機制,能夠整合更多的存儲服務整合。測試

因而,利用中秋休假的時間,寫了這樣的一個Driver。優化

https://pypi.python.org/pypi/docker-registry-driver-sinastorage/

安裝部署:

  1. 須要有一個Docker運行環境,如CoreOS, Ubuntu14, CentOS7。
  2. 運行以下命令:

    # 使用以前申請好的帳號Key及想要的Bucket名稱,代替YOUR_*部分。
    docker run -d \
        -e SETTINGS_FLAVOR=sinastorage \
        -e SINASTORAGE_BUCKET=YOUR_BUCKET \
        -e SINASTORAGE_ACCESSKEY=YOUR_ACCESSKEY \
        -e SINASTORAGE_SECRETKEY=YOUR_SECRETKEY \
        -p 5000:5000 --name registry kerwin/docker-registry-sinastorage
  3. 這樣命令會在本地啓動5000端口的服務, 如何使用:

    docker tag ubuntu localhost:5000/ubuntu
    docker push localhost:5000/ubuntu
    
    # 這樣上傳了一個ubuntu的基本鏡像。任什麼時候刻想要用到原來鏡像的時候:
    docker pull localhost:5000/ubuntu

注:

  1. 每次Commit都是增量備份,因此使用中並不會佔用太多的容量,上傳下載都很快。
  2. 若但願看到以前上傳的鏡像,能夠在控制檯中的 BUCKET -> repositories -> libraray 中查看。
  3. Driver自己經過了全部Registry提供的測試用例,筆者本身使用的時候未遇到問題。但性能和穩定性等方面還需優化。不建議當即在生產環境中使用,也歡迎Contribute。
  4. Github: https://github.com/kerwin/docker-registry-driver-sinastorage
  5. DockerHub: https://registry.hub.docker.com/u/kerwin/docker-registry-sinastorage/
相關文章
相關標籤/搜索