仓库
仓库(Repository)是集中存放镜像的地方。一个容易与之混淆的概念是注册服务器(Registry)。实际上注册服务器是存放仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。由此可以理解为仓库是一个具体的项目或目录。例如对于仓库地址dl.dockerpool.com/ubuntu来说,dl.dockerpool.com是注册服务器地址,ubuntu是仓库名。
仓库又分为公共仓库和私有仓库,本章介绍如何使用DockerHub官方仓库进行登录、下载等操作,以及使用DockerPool社区提供的仓库下载镜像,最后还介绍了创建和使用私有仓库。
Docker Hub
目前docker官方维护了一个公共仓库https://hub.docker.com,大部分需求都可以通过在Docker Hub中直接下载镜像来实现。
登录
可以通过docker login命令来输入用户名、密码和邮箱来完成注册和登录,注册成功后,本地用户目录的.dockercfg中将保存用户的认证信息。
基本操作
用户无需登录即可通过docker search 命令来查找官方仓库中的镜像,并通过docker pull命令来将他下载至本地。
例如以centos为关键词进行搜索:
docker search centos
根据是否为官方提供,可将这些镜像资源分为两类。一种是类似centos这样的基础镜像,称为基础或根镜像。这些镜像由Docker公司创建、验证、支持和提供。这样的镜像往往使用单个单词作为名字。
还有一种类型,比如ansible/centos7-ansible镜像,它是由DockerHub的用户ansible创建并维护的,带有用户名称为前缀,表明是某用户的某仓库。
另外,在查找的时候通过-s N参数可以指定仅显示评价为N星以上的镜像。
自动创建
自动创建(Automated Builds)功能对于需要经常升级镜像内程序来说十分方便,有时候,用户创建了镜像,安装了某软件,运行了自己的代码工程等。如果软件发布新版本则需要手动更新镜像。
而自动创建功能使得用户通过Docker Hub指定跟踪一个目标网站(目前支持GitHub或BitBucket)上的项目,一旦发现新的提交,则自动执行创建。
包括如下步骤:
- 创建并登陆Docker Hub、目标网站(GitHub),在目标网站中连接账户到Docker Hub
- 在Docker Hub中配置一个自动创建
- 选取一个目标网站(GitHub)中的项目(需要含Dockerfile)和分支
- 指定Dockerfile的位置,并提交创建
之后,可以在Docker Hub的“自动创建”页面中跟踪每次创建的状态。
创建和使用私有仓库
使用registry镜像创建私有仓库
安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境:
docker run -d -p 5000:5000 registry
这将自动下载并启动一个registry容器,创建本地的私有仓库服务。默认情况下,会将仓库创建在容器的/tep/registry目录下,可以通过-v参数来将镜像文件存放在本地的指定路径上
例如下面的例子,将上传的镜像放到/opt/data/registry目录:
docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
此时,在本地将启动一个私有仓库服务,监听端口为5000。
管理私有仓库镜像
首先搭建私有仓库,地址为:10.0.2.2:5000,然后在虚拟机(ubuntu14.04)里测试上传和下载镜像。使用docker tag命令将这个镜像标记为10.0.2.2/test(格式为docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME:[:TAG]):
docker tag ubuntu:14.04 10.0.2.2:5000
使用docker push上传标记的镜像:
docker push 10.0.2.2:5000/test
使用curl查看仓库10.0.2.2:5000中的镜像:
curl http://10.0.2.2:5000/v1/search
若看到{"description":"","name":"library/test"},表明镜像已经上传成功了。现在可以从任意一台能访问10.0.2.2地址的机器去下载这个镜像了:
docker pull 10.0.2.2:5000/test