仓库(Repository)是集中存放镜像的地方。
一个容易与之混淆的概念是注册服务器(Registry)。
注册服务器是存放仓库的具体服务器,每个服务器上可以有多个仓库,每个仓库下面有多个镜像。
仓库可以被认为是一个具体的项目或目录。
仓库分为公共仓库和私有仓库,下面将分别介绍如何使用DockerHub官方仓库进行登录、下载等基本操作。
Docker Hub
目前 Docker 官方维护了一个公共仓库 https://hub.docker.coom,其中已包括15000 多个的镜像。大部分需求都可以通过在 Docker Hub 中下载镜像来实现。
登录
通过执行 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。注册成功后,本地用户目录的.dockercfg 中将保存用户的认证信息。
基本操作
用户无需登录即可通过 docker search 命令来查找官方仓库中的镜像,并利用docker pull 命令来将它下载到本地。
例如:以centos为关键词进行搜索:
root@localhost:~# docker search centos
例如:下载官方的centos 镜像到本地如下所示:
root@localhost:~# sudo docker pull centos
用户也可以在登录后通过 docker push 命令来将本地镜像推送到 Docker Hub。
创建和使用私有仓库
使用 registry 镜像创建私有仓库
自动下载并店一个 registry 容器,创建本地的私有仓库服务。
root@localhost:~# sudo docker run -d -p 5000:5000 registry
默认情况下,会将仓库创建在容器的 /tmp/registry 目录下。通过 -v 参数将镜像文件存放在本地指定的路径上。
例如下南的例子将上传的镜像放到 /opt/data/registry 目录:
root@localhost:~# sudo docker run -d -p 5001:5001 -v /opt/data/registry:/tmp/registry registry
此时,在本地将启动一个私有仓库服务,监听端口为 5001。
管理私有仓库镜像
1.在本机搭建私有仓库,并查看IP为:10.0.2.2
root@localhost:~# sudo docker run -d -p 5000:5000 registry
2.然后在虚拟机里查看系统已有镜像:
root@localhost:~# sudo docker images
3.使用 docker tag 命令将这个镜像标记为10.0.2.2:5000/test
root@localhost:~# sudo docker tag registry:latest
4.使用 docker push 上传标记的镜像:
root@localhost:~# sudo docker push 10.0.2.2:5000/test
5.用 curl 查看仓库 10.0.2.2:5000 中的镜像:
root@localhost:~# curl http://10.0.2.2:5000/v1/search
在结果中可以看到{“description": "", "name": "library/test"},表明镜像已经成功上传。
现在可以到任务一台能访问10.0.2.2 地址的机器去下载这个镜像:
root@localhost:~# sudo docker pull 10.0.2.2:5000/test
小结
仓库概念的引入,为 Docker 镜像文件的分发和管理提供了便捷的途径。
在企业的生产环境中,一般使用私有仓库来维护内部镜像。
参考文档
《Docker 技术入门与实战》第5章 仓库