docker【5】 docker仓库介绍以及私有仓库建立

仓库(Repository)是集中存放镜像的地方。


一、Docker Hub    

    目前 Docker 官方维护了一个公共仓库 docker hub ,其中已经包括了超过 15,000 的镜像。大部分需求,都可以通过在 Docker Hub 中直接下载镜像来实现。

1、登录

可以通过执行 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。注册成功后,本地用户目录的.dockercfg 中将保存用户的认证信息。

2、基本操作

用户无需登录即可通过docker search 命令来查找官方仓库中的镜像,并利用docker pull 把他们下载下来

例如用ubuntu作为关键词进行搜索

 
 
  1. lin@ubuntu:~$ docker search ubuntu
  2. NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
  3. ubuntu                         Ubuntu is a Debian-based Linux operating s...   2830      [OK]      
  4. ubuntu-upstart                 Upstart is an event-based replacement for ...   52        [OK]      
  5. sequenceiq/hadoop-ubuntu       An easy way to try Hadoop on Ubuntu             26                   [OK]
  6. torusware/speedus-ubuntu       Always updated official Ubuntu docker imag...   25                   [OK]
  7. ubuntu-debootstrap             debootstrap --variant=minbase --components...   20        [OK]      
  8. tleyden5iwx/ubuntu-cuda        Ubuntu 14.04 with CUDA drivers pre-installed    18                   [OK]

    可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、星级(表示该镜像的受欢迎程度)、是否官方创建、是否自动创建。 官方的镜像说明是官方项目组创建和维护的,automated 资源允许用户验证镜像的来源和内容。

用户也可以在登录后,通过docker push 把自己的镜像上传到仓库;

3、自动创建

    自动创建(Automated Builds)功能对于需要经常升级镜像内程序来说,十分方便。 有时候,用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动更新镜像。

    而自动创建允许用户通过 Docker Hub 指定跟踪一个目标网站(目前支持 GitHub 或 BitBucket)上的项目,一旦项目发生新的提交,则自动执行创建。

要配置自动创建,包括如下的步骤:

  • 创建并登录 Docker Hub,以及目标网站;

  • 在目标网站中连接帐户到 Docker Hub;

  • 在 Docker Hub 中 配置一个自动创建;

  • 选取一个目标网站中的项目(需要含 Dockerfile)和分支;

  • 指定 Dockerfile 的位置,并提交创建。

  • 之后,可以 在Docker Hub 的 自动创建页面 中跟踪每次创建的状态。

二、私有仓库

    有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。这里将介绍介绍如何使用本地仓库。

    docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。

1、在docker环境下安装

安装运行 docker-registry

在安装了 Docker 后,可以通过获取官方 registry 镜像来运行。

 
 
  1. $ sudo docker run -d -p 5000:5000 registry

这将使用官方的 registry 镜像来启动本地的私有仓库。

    默认情况下,仓库会被创建在容器的 /tmp/registry 下。可以通过 -v 参数来将镜像文件存放在本地的指定路径。 例如下面的例子将上传的镜像放到 /docker/data/registry 目录。

 
 
  1. $ sudo docker run -d -p 5000:5000 -v /docker/data/registry:/tmp/registry registry

2、在没有docker的环境下安装

对于ubuntu或者centos可以直接通过源安装:(我自己使用的是ubuntu)

  • 安装

ubuntu

 
 
  1. $ sudo apt-get install -y build-essential python-dev libevent-dev python-pip liblzma-dev$ sudo pip install docker-registry

centos

 
 
  1. $ sudo yum install -y python-devel libevent-devel python-pip gcc xz-devel$ sudo python-pip install docker-registry
  • 修改配置文件

主要修改 dev 模板段的 storage_path 到本地的存储仓库的路径。

 
 
  1. lin@lin166:~/build/docker-registry$ cp config/config_sample.yml config/config.yml

这里使用默认的配置

然后进行启动

 
 
  1. lin@lin166:~/build$ gunicorn -c contrib/gunicorn.py docker_registry.wsgi:application


三、在私有仓库上传、下载、搜索镜像   

    创建好私有仓库之后,就可以使用 docker tag 来标记一个镜像,然后推送它到仓库,别的机器上就可以下载下来了。例如私有仓库地址为 192.168.0.167:5000。

查看原有镜像

  
  
  1. lin@ubuntu:~$ docker images
  2. REPOSITORY                   TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
  3. ubuntu15.10                  v2                  c72878b77cf5        23 hours ago        133.5 MB
  4. myjob1                       latest              764c656f5fc5        29 hours ago        133.5 MB
  5. registry                     latest              bdd0d98559dd        6 days ago          422.9 MB
  6. ubuntu                       15.10               2804d41e7f10        7 days ago          133.5 MB
  7. ubuntu                       latest              89d5d8e8bafb        7 days ago          187.9 MB
使用docker tag 将 myjob1 这个镜像标记为 192.168.0.167:5000/myjob1(格式为 docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG])。

  
  
  1. lin@ubuntu:~$ docker images
  2. REPOSITORY                   TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
  3. ubuntu15.10                  v2                  c72878b77cf5        23 hours ago        133.5 MB
  4. 192.168.0.167:5000/myjob1    v1                  764c656f5fc5        29 hours ago        133.5 MB
  5. 127.0.0.1:5000/myjob1        v1                  764c656f5fc5        29 hours ago        133.5 MB
  6. 127.0.0.1:5000/registry/my   latest              764c656f5fc5        29 hours ago        133.5 MB
  7. myjob1                       latest              764c656f5fc5        29 hours ago        133.5 MB
  8. registry                     latest              bdd0d98559dd        6 days ago          422.9 MB
  9. ubuntu                       15.10               2804d41e7f10        7 days ago          133.5 MB
  10. ubuntu                       latest              89d5d8e8bafb        7 days ago          187.9 MB

使用命令把镜像推送到本地仓库

  
  
  1. docker push  192.168.0.167:5000/myjob1:v1
然后可以到另外一个机器去下载这个镜像
  
  
  1. docker push 192.168.0.167:5000/myjob1:v1

三、配置文件

Docker 的 Registry 利用配置文件提供了一些仓库的模板(flavor),用户可以直接使用它们来进行开发或生产部署。

1、模板

在 config_sample.yml 文件中,可以看到一些现成的模板段:

 
 
  1. common:基础配置
  2. local:存储数据到本地文件系统
  3. s3:存储数据到 AWS S3 中
  4. dev:使用 local 模板的基本配置
  5. test:单元测试使用
  6. prod:生产环境配置(基本上跟s3配置类似)
  7. gcs:存储数据到 Google 的云存储
  8. swift:存储数据到 OpenStack Swift 服务
  9. glance:存储数据到 OpenStack Glance 服务,本地文件系统为后备
  10. glance-swift:存储数据到 OpenStack Glance 服务,Swift 为后备
  11. elliptics:存储数据到 Elliptics key/value 存储

用户也可以添加自定义的模版段。


默认情况下使用的模板是 dev,要使用某个模板作为默认值,可以添加 SETTINGS_FLAVOR 到环境变量中,例如


export SETTINGS_FLAVOR=dev

另外,配置文件中支持从环境变量中加载值,语法格式为 _env:VARIABLENAME[:DEFAULT]。

2、示例配置

  
  
  1. common:
  2. loglevel: info
  3. search_backend: "_env:SEARCH_BACKEND:"
  4. sqlalchemy_index_database:
  5. "_env:SQLALCHEMY_INDEX_DATABASE:sqlite:tmp/docker-registry.db"
  6. prod:
  7. loglevel: warn
  8. storage: s3
  9. s3_access_key: _env:AWS_S3_ACCESS_KEY
  10. s3_secret_key: _env:AWS_S3_SECRET_KEY
  11. s3_bucket: _env:AWS_S3_BUCKET
  12. boto_bucket: _env:AWS_S3_BUCKET
  13. storage_path: /srv/docker
  14. smtp_host: localhost
  15. from_addr: docker@myself.com
  16. to_addr: my@myself.com
  17. dev:
  18. loglevel: debug
  19. storage: local
  20. storage_path: /home/myself/docker
  21. test:
  22. storage: local
  23. storage_path: /tmp/tmpdockertmp



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值