仓库
仓库是集中存放镜像的地方
还有一个容易和它混淆的概念是注册服务器-Registry,而实际上注册服务器是存放仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。
由此,仓库可被认为是一个具体的项目或目录。例如,对于仓库地址dl.dockerpool.com/ubuntu来说,dl.dockerpool.com是注册服务器的地址,ubuntu是仓库名
仓库又分为公共仓库和私有仓库,在这部分我讲给大家介绍如何使用DockerHub官方仓库进行登录、下载等基本操作,以及使用DockerPool社区提供的仓库下载镜像,最后还将介绍创建以及使用私有仓库的基本操作。
DockerHub
目前Docker官方维护了一个公共仓库https://hub.docker.com,其中已经包括几万个镜像,大部分需求都可以通过在DockerHub中直接下载镜像来实现
登录
可通过执行docker login 命令来输入用户名、密码和邮箱来完成注册和登录。注册成功后,本地用户目录的.dockercfg中将保存用户的认证信息。
基本操作
用户无需登录即可通过docker search命令来查找官方仓库中的镜像,并利用docker pull命令来将它下载到本地。
之前我们在讲搜寻镜像的时候已经具体介绍了如何使用docker pull命令,在这里就不多说了
根据是否为官方提供,可以把这些个镜像资源分成两大类,一种是类似centos这样的基础镜像,成为基础镜像或者根镜像,这些镜像是由Docker公司创建、验证、支持并提供。这样的镜像往往使用单个单词作为名字。
还有一种类型,比如docker.io/jdeathe/centos-ssh镜像,它是由DockerHub的用户jdeathe创建并维护的,带有用户名作为前缀,表明是某个用户的某个仓库。可以通过用户名称前缀user_name/来指定使用某个用户提供的镜像,比如jdeathe用户的镜像前缀为jdeathe/。
另外,在查找的时候通过-s N参数可以指定仅显示评价为N型以上的镜像
下载centos镜像到本地如下所示:
$ docker pull docker.io/jdeathe/centos-ssh
可以看粗,网速的确重要啊!!
多来几次试试:
用户也可以在登陆后通过docker push 命令来将本地镜像推送到Docker Hub
自动创建
自动创建功能对于需要经常升级镜像内程序来说十分重要,有时用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动更新镜像。
而自动创建功能使得用户通过Docker Hub指定跟踪一个目标网站(目前支持GitHub或BitBucket)上的项目,一旦项目发现新的提交,则自动执行创建。
要配置自动创建,需要以下几个步骤:
1)创建并登陆Docker Hub,以及目标网站;*在目标网站中连接账户到Docker Hub;
2)在Docker Hub中配置一个自动创建;
3)选取一个目标网站中的项目(需要含Dockerfile)和分支;
4)指定Dockerfile的位置,并提交创建;
之后,可以在Docker Hub的‘自动创建’页面中跟踪每次创建的状态。
Docker Pool简介
Docker Pool 是国内专业的Docker技术社区,目前也提供了官方镜像的下载管理服务
查看镜像
访问http://www.dockerpool.com/downloads,即可看到已有的仓库和存储的镜像,包括Centos、Ubuntu、Java、Mongo、MySQL、Nginx等热门仓库和镜像。
下载镜像
下载镜像使用docker pull命令,但是要在镜像名称前添加注册服务器的具体地址dl.dockerpool.com:5000
如,要下载ubuntu仓库的12.04镜像,可以使用:
$ docker pull dl.dockerpool.com:5000/ubuntu:12.04
通过docker images 命令来查看下载到本地的镜像:
$ docker images
下载后,可以更新镜像的标签,与官方标签保持一致:
$ docker tag dl.dockerpool.com:5000/ubuntu:12.04 ubuntu:12.04
需要注意的是,从Docker Pool下载的镜像文件,与官方镜像文件是完全一致的。
另外,阿里云等服务商也已经提供了Docker镜像的下载服务。当然,最便捷的方式还是搭建本地的仓库服务器,后面我们会详细讲到。
创建和使用私有仓库
使用registry 镜像创建私有仓库
安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境:
$ docker run -d -p 5000:5000 registry
这将自动下载并启动一个registry容器,创建本地的私有仓库服务。
默认情况下,会将仓库创建在容器的/tmp/registry目录下,可以通过-v参数来将镜像文件存放在本地的指定路径上。
如,要将上传的镜像放到/opt/data.regustry目录:
$ docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
此时,在本地将启动一个私有仓库服务,监听端口为5000
管理私有仓库镜像
首先在linux系统中搭建私有仓库,查看其地址为10.0.2.2:5000。然后在虚拟机系统中测试上传和下载镜像
查看已有镜像:
$ docker images
使用docker tag 命令将这个镜像标记为10.0.2.2:5000/test:
dockertagubuntu:14.0410.0.2.2:5000/test docker images
使用docker push上传标记的镜像:
$ docker push 10.0.2.2:5000/test
用curl查看仓库10.0.2.2:5000中的镜像:
在结果中如果可以看到{“description”:”“,”name”:”library/test”}
表明镜像已经成功上传了
之后可以到任意一台能访问到10.0.2.2地址的机器去下载这个镜像了
$ docker pull 10.0.2.2:5000/test
下载之后自己再改个标签
仓库就讲完了