温故知新,基于Nexus3和Docker搭建私有Docker Mirrors镜像库

前言

接着上一篇文章关于基于Nexus3和Docker搭建私有Nuget服务的探索,我们可以进一步利用Nexus3来创建一个私有的Docker镜像库满足内部需求。

仓库类型

  • hosted: 本地存储,即同docker官方仓库一样提供本地私服功能。
  • proxy: 提供代理其他仓库的类型,如docker中央仓库。
  • group: 组类型,实质作用是组合多个仓库为一个地址。

仓库存储

先为Docker Mirrors新建一个用来存储镜像的存储位置。

在Administration菜单中RespositoryBlob Stores子菜单中,点击Create blob store按钮,填写表单新建一个Blob空间。

创建本地私有仓库

在Administration菜单中RespositoryRespositories子菜单中,点击Create respository按钮,填写表单新建一个类型docker(hosted)的仓库。

在表单中,在Repository ConnectorsHTTP或者HTTPS项中需要填写容器对外暴露端口,并且最好勾选下Enable Docker V1 API复选框。

注意:因为后面登录这个镜像库的时候,上下文的路径只能是根目录,所以这里我们需要使用创建容器时预留的端口号进行仓库连接绑定。

在表单中,选中刚创建的Blob空间作为Blob Store

创建成功之后,点击仓库详情,即可看到这个仓库的地址。

如果要登陆该仓库,地址就是localhost:8082

创建远程代理仓库

在Administration菜单中RespositoryRespositories子菜单中,点击Create respository按钮,填写表单新建一个类型docker(proxy)的仓库。

在表单中,填写要代理的远程仓库地址,比如https://registry-1.docker.io

还可以点击View Certificate,还可以勾选Use the Nexus truststore,选中刚创建的Blob空间作为Blob Store。

创建成功之后,点击仓库详情,即可看到这个仓库的地址。

创建本地和远程共存的仓库

在Administration菜单中RespositoryRespositories子菜单中,点击Create respository按钮,填写表单新建一个类型docker(group)的仓库。

在表单中,在Repository ConnectorsHTTP或者HTTPS项中需要填写容器对外暴露端口,并且最好勾选下Enable Docker V1 API复选框。

在表单中,选中刚创建的Blob空间作为Blob Store

在表单中,在左侧的Member Resositories成员仓库选择之前创建的hosted类型和proxy类型的仓库,添加到右侧列表中,再点击创建。

如果要登陆该仓库,地址就是localhost:8082

拉取私有镜像

测试从组仓库拉取,如果仓库中没有缓存,它将从代理仓库的源镜像去拉,如果仓库中有缓存,它将直接从本地存储下发,速度会变得很快。

docker pull localhost:8083/$imageName:$tag

推送本地镜像

测试推送本地镜像到私有仓库中。

先把本地镜像打一个私有仓库的镜像分支版本出来

docker tag $sourceImage:$tag $targetImage:$tag

推送本地镜像Tag到私有仓库

docker push $targetImage:$tag

注意:docker(group)类型的仓库是只能拉取不能推送的,这里切记!如果需要推送,应该登录并推送到docker(hosted)的仓库。

参考资料

posted @ 2021-03-07 15:31  TaylorShi  阅读(475)  评论(0编辑  收藏  举报