使用新浪云存储搭建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/
相关文章
相关标签/搜索