温故知新,基于Nexus3和Docker搭建私有Docker Mirrors镜像库
前言
接着上一篇文章关于基于Nexus3和Docker搭建私有Nuget服务的探索,我们可以进一步利用Nexus3来创建一个私有的Docker镜像库满足内部需求。
仓库类型
- hosted: 本地存储,即同docker官方仓库一样提供本地私服功能。
- proxy: 提供代理其他仓库的类型,如docker中央仓库。
- group: 组类型,实质作用是组合多个仓库为一个地址。
仓库存储
先为Docker Mirrors新建一个用来存储镜像的存储位置。
在Administration菜单中Respository
的Blob Stores
子菜单中,点击Create blob store
按钮,填写表单新建一个Blob空间。
创建本地私有仓库
在Administration菜单中Respository
的Respositories
子菜单中,点击Create respository
按钮,填写表单新建一个类型docker(hosted)
的仓库。
在表单中,在Repository Connectors
的HTTP
或者HTTPS
项中需要填写容器对外暴露端口,并且最好勾选下Enable Docker V1 API
复选框。
注意:因为后面登录这个镜像库的时候,上下文的路径只能是根目录,所以这里我们需要使用创建容器时预留的端口号进行仓库连接绑定。
在表单中,选中刚创建的Blob空间作为Blob Store
创建成功之后,点击仓库详情,即可看到这个仓库的地址。
如果要登陆该仓库,地址就是localhost:8082
了
创建远程代理仓库
在Administration菜单中Respository
的Respositories
子菜单中,点击Create respository
按钮,填写表单新建一个类型docker(proxy)
的仓库。
在表单中,填写要代理的远程仓库地址,比如https://registry-1.docker.io
还可以点击View Certificate
,还可以勾选Use the Nexus truststore
,选中刚创建的Blob空间作为Blob Store。
创建成功之后,点击仓库详情,即可看到这个仓库的地址。
创建本地和远程共存的仓库
在Administration菜单中Respository
的Respositories
子菜单中,点击Create respository
按钮,填写表单新建一个类型docker(group)
的仓库。
在表单中,在Repository Connectors
的HTTP
或者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)
的仓库。