在 Docker 中,当我们执行 docker pull xxx 的时候,可能会比较好奇,Docker 会去哪儿查找并下载镜像呢?
它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库,上面的镜像,大家都可以看到,也可以使用。所以,我们也可以带上仓库地址去拉取镜像,如:docker pull registry.hub.docker.com/library/alpine,不过要注意,这种方式下载的镜像的默认名称就会长一些。
如果要在公司中使用 Docker,我们基本不可能把商业项目上传到公共仓库中,那如果要多个机器共享,又能怎么办呢?
正因为这种需要,所以私有仓库也就有用武之地了。
所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免了商业项目暴露出去的风险。
下面我们用官方提供的registry镜像来搭建私有镜像仓库,当然还有其它很多方法。
1.下载镜像registry
2.查看镜像是否pull下来了
3.运行registry容器
参数说明
-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
-v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
--restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
--name registry:创建容器命名为registry,你可以随便命名;
registry:latest:这个是刚才pull下来的镜像;
4.测试镜像仓库中所有的镜像
{"repositories":[]}
现在是空的,因为才刚运行,里面没有任何镜像内容
我们下载一个nginx的镜像
查看现在的镜像
为镜像打标签
查看一下打好的tag:
看一看到v1就是我们刚刚打的标签
现在我们把v1这个镜像上传到我们创建的私有仓库里面里面
查看仓库里面是否已经有了我们刚刚push的镜像
至此镜像已经上传到私有仓库了
我们可以测试一下,从私有仓库里面拉取刚刚push上去的nginx镜像
发现镜像成功的被拉下来