仓库(Repository)是集中存放镜像的地方。
一个容易与之混淆的概念是注册服务器(Registry)。实际上注册服务器是存放仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址dl.dockerpool.com/ubuntu来说,dl.dockerpool.com是注册服务器地址,ubuntu是仓库名。
仓库又分公共仓库和私有仓库,在本章将分别展示如何使用DockerHub官方仓库进行登录、下载等基本操作,以及使用DockerPool社区提供的仓库下载镜像;最后还将介绍创建和使用私有仓库的基本操作。
Docker Hub
目前Docker官方维护了一个公共仓库 https://hub.docker.com,其中已经包括15 000多个的镜像。大部分需求都可以通过在 Docker Hub中直接下载镜像来实现,如图5-1所示。
登录
可以通过执行docker login命令来输入用户名、密码和邮箱来完成注册和登录。注册成功后,本地用户目录的.dockercfg中将保存用户的认证信息。
基本操作
用户无需登录即可通过docker search命令来查找官方仓库中的镜像,并利用docker pull命令下载到本地。
根据是否为官方提供,可将这些镜像资源分为两类。一种是类似centos这样的基础镜像,称为基础或根镜像。这些镜像是由Docker公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。
还有一种类型,比如tianon/centos镜像,它是由 DockerHub的用户tianon创建并维护的,带有用户名称为前缀,表明是某用户的某仓库。可以通过用户名称前缀user_name/来指定使用某个用户提供的镜像,比如tianon用户的镜像前缀为tianon/。
另外,在查找的时候通过-s N参数可以指定仅显示评价为N星以上的镜像。
自动创建
自动创建(Automated Builds)功能对于需要经常升级镜像内程序来说十分方便。有时候,用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动更新镜像。
而自动创建功能使得用户通过Docker Hub指定跟踪一个目标网站(目前支持GitHub或BitBucket)上的项目,一旦项目发现新的提交,则自动执行创建。
要配置自动创建,包括如下的步骤:
1) 创建并登录Docker Hub,以及目标网站;在目标网站中连接帐户到 Docker Hub。
2)在 Docker Hub 中配置一个自动创建。
3)选取一个目标网站中的项目(需要含Dockerfile)和分支。
4)指定Dockerfile的位置,,并提交创建。
之后,可以在 Docker Hub 的“自动创建”页面中跟踪每次创建的状态。
Docker Pool
Docker Pool ( http://dockerpool.com))是国内专业的 Docker技术社区,目前也提供了官方镜像的下载管理服务 。
查看镜像
访问 http://www.dockerpool.com/downloads,即可看到已有的仓库和存储的镜像,包括CentOS、Ubuntu、Java、Mongo、MySQL、Nginx等热门仓库和镜像。
以CentOS仓库为例,其中包括Centos 5、CentOS 6和 CentOS 7等镜像。
下载镜像
下载镜像也是使用docker pull命令,但是要在镜像名称前添加注册服务器的具体地址dl .dockerpool.com: 5000。
例如,要下载ubuntu仓库的12.04镜像,可以使用:
$ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04
通过docker images命令来查看下载到本地的镜像:
$ sudo docker imagesdl .dockerpool.com : 5000/ubuntu 12.04 ae7818fadlbc l min ago 116.2MB
下载后,可以更新镜像的标签,与官方标签保持一致:
$ sudo docker tag dl.dockerpool.com:5000/ubuntu:12.04 ubuntu:12.04
需要注意的是,从 Docker Pool下载的镜像文件,与官方镜像文件是完全一致的。
另外,阿里云等服务商也已经提供了Docker镜像的下载服务。当然,最便捷的方式还是搭建本地的仓库服务器,将在后续章节予以介绍。
创建和使用私有仓库
使用registry镜像创建私有仓库
安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境:
$ sudo docker run -d -p 5000:5000 registry
这将自动下载并启动一个registry容器,创建本地的私有仓库服务。
默认情况下,会将仓库创建在容器的/tmp/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径上。
例如下面的例子将上传的镜像放到/opt / data/registry目录:
$ sudo docker run -d -p 5000:5000 -v /opt/data/registry : /tmp/registry registry
此时,在本地将启动一个私有仓库服务,监听端口为5000。
管理私有仓库镜像
假设搭建仓库地址为10.0.2.2:5000
使用docker tag将镜像标记为10.0.2.2:5000/test<br />使用docker push上传标记的镜像<br />![67A{F__FUJ)7UD4YM4]T(2X.png](/uploads/projects/jiarunishiyitoulv@ohsdsy/0a98d193b6a32b3f5d12e78819187514.png)
用curl查看仓库10.0.2.2:5000中的镜像
docker pull下载10.0.2.2:5000的镜像
![`X7WWC]YO$}(W8_~ODU@{5.png
