仓库(Repository)是集中存放镜像的地方,一个容易与之混淆的概念是注册服务器(Registry)。实际上,注册服务器是存放仓库的具体服务器,每个服务器上有多个仓库,每个仓库有多个镜像。因此,仓库可以被看做是一个具体的项目或者目录,例如对于仓库地址
dl.dockerpool.com/ubuntu
来说,dl.dockerpool.com
是注册服务器地址,ubuntu
是仓库名。
Docker Hub
目前Docker官方维护了一个公共仓库https://hub.docker.com
,其中包含了15000多个镜像,大部分需求可以通过在Docker Hub中直接下载来完成。
登录
可以通过docker login
来输入用户名,密码和邮箱来完成注册登录,。
基本操作
用户无需登录,只需要docker search
来查找guan官方仓库中的镜像,并利用docker pull
命令将其下载到本地。
下载镜像
下载镜像也是docker pull
,但是要在镜像名称之前添加注册服务器的具体地址dl.dockerpool.com:5000
例如,我们需要下载ubuntu仓库的12.04镜像,可以使用:
$ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04
$ sudo docker images
dl.dockerpool.com:5000/ubuntu ae78174402kdf3 1min ago 116.2MB
创建和使用私有仓库
安装Docker以后,可以使用官方提供的registry
镜像来简单搭建一个本地私有仓库环境。
$ sudo docker run -d -p 5000:5000 registry
默认的情况下,会将仓库(repository)创建在/tmp/registry
目录下。也可以通过添加-v
参数将镜像存储在指定的存储路径上。
例如,下面的例子可以将镜像放在/opt/data/registry
目录。
$ sudo docker run -d -p 5000:5000 /opt/data/registry:/tmp/registry registry
管理私有仓库
使用docker tag
命令对镜像进行标记,格式为docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
:
$ sudo tag ubuntu:14.04 10.0.2.2:5000/test
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 ba5887dcewp75 6 days ago 199.3MB
10.0.2.2:5000/test latest ba5887dcwp75 6 days ago 199.3MB
然后可以使用docker push
上传镜像
$ sudo docker push 10.0.2.2:5000/test
The push refers to a repository [10.0.2.2:5000/test] (len: 1)
Sending image list
Pushing repository 10.0.2.2:5000/test (1 tags)
Image 93r033dcea9aa already pushed, skipping
...
Image ba5887dcwp75 already pushed, skipping
Pushing tag for rev [ba5887dcwp75] on {https://10.0.2.2:5000/v1/repositories/test/tag/latest}
用命令curl
查看仓库10.0.2.2:5000中的镜像:
$ curl http://10.0.2.2:5000/v1/search
{"num_results":1,"query":"","results":[{"description":"","name":"library/test"}]}
在结果中看到{"description":"","name":"library/test"},表明镜像上传成功了。 这个时候,可以到任意一台能够访问10.0.2.2的机器上去下载该镜像了。
$sudo docker pull 10.0.2.2:5000/test
下载之后还可以添加一个通用的标签ubuntu:14.04
$ sudo docker tag 10.0.2.2:5000/test ubuntu:14.04
网友评论