一.概念讲解
1.仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。 国内的公开仓库包括 Docker Pool等,可以提供大陆用户更稳定快速的访问。
2.当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
3.私有仓库的优势:
(1)有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,
(2)使用私有仓库可以节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可。而且提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。
(3)Docker官方提供的工具docker-registry可以用于构建私有的镜像仓库。
二.公共仓库
-
Docker仓库是用来包含镜像的位置,Dokcer提供一个注册服务器(Registry)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像
-
Docker运行中使用的默认仓库是Docker Hub公共仓库,Docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库
1.首先在以下网址中注册一个帐号(注意:帐号名不要写成电话号码,这里鄙人就犯错了,所以以下所有看不清的皆为鄙人的电话号码)
2.在docker主机中登录帐号(此处需要联网,因为此处相当于登陆网页中的docker)
[root@server1 ~]# docker login
3.给nginx:latest添加标签并查看
[root@server1 ~]# docker tag nginx:latest 1***5/nginx:vv1
[root@server1 ~]# docker images 1***5/nginx:vv1
注意:
docker hub为了区分不同用户的同名镜像,要求镜像的格式是:[username]/xxx.tag
4.在docker hub(网页中)新建一个公共仓库
-
点击Create Repository
-
输入创建的Repository名称
-
查看Repository,会发现此时Tags没有内容
5.将镜像上传到docker hub中[root@server1 ~]# docker push 1***5/nginx:vv1
6.在docker hub中查看,发现此时的tag中有刚上传的标签为vv1的镜像
7.从docker hub拉取镜像,会发现如果docker主机中有要拉取的镜像,那么会更新,如果没有,那么会拉取
[root@server1 ~]# docker pull 18909238335/nginx:vv1
docker主机中有镜像:
docker主机中没有镜像:
8.删除镜像(避免影响之后的实验)
[root@server1 ~]# docker rmi 18909238335/nginx:vv1
三.私有仓库的搭建及镜像的下载
1.Docker Hub 虽然方便,但是还是有限制:
(1)需要internet连接,速度慢
(2)所有人都可以访问
(3)由于安全原因企业不允许将镜像放到外网
好消息是docker公司已经将registry开源,我们可以快速构建企业私有仓库
2.Registry工作原理
一次docker pull/push背后发生的事情
(1)index服务只要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载镜像,在下载