我们上传到 Docker Hub 的镜像任何人都能够访问,虽然可以用私有 repository,但不是免费的。
所以我们就搭建本地Registry,来管理我们自己的仓库。
Docker 已经将 Registry 开源了,我们可以直接docker pull,
Docker Hub 上也有官方的镜像 Registry,我们可以注册一个账号,docker login 登陆,然后下载镜像。
一,部署Registry
运行命令 docker pull registry
二,运行容器
-d
是后台启动容器。-p
将容器的 5000 端口映射到 Host 的 5000 端口。5000 是 registry 服务端口。-v
将容器 /var/lib/registry 目录映射到 Host 的 /myregistry,用于存放镜像数据。
上传到本地的镜像保存在/myregistry/docker/registry/v2/repositories/ 下面
查看正在运行的容器
![](/qrcode.jpg)
打开浏览器,访问http://127.0.0.01:5000/v2/_catalog,可以查看到{"repositories": []} 表示现在仓库中,没有镜像images
三、在本地host上,重命名镜像,添加新的tag,使之与registry 相匹配
以busybox镜像为例,上传到本地仓库中,或者从Docker Hub 下载也可以、
镜像名称由 repository 和 tag 两部分组成,默认为latest。可以在docker build 时用格式image:tag指定,
而 repository 的完整格式为:[registry-host]:[port]/[username]/xxx
四、上传镜像到仓库中
成功会出现上述提示,表示本地的仓库默认使用的是https进行上传,那行是latest是重新上传出现的。
如果你在push镜像的时候出现问题,可能是因为我们启动的registry服务不是安全可信赖的.这个时候我们需要修改docker的配置文件/etc/default/docker,添加下面的内容: "- - insecure-registry 127.0.0.1:5000", 再重启docker 服务
五、删除下载的镜像,从本地镜像下载。
docker rmi 127.0.0.1:5000/busybox-test 删除镜像
docker pull 从本地镜像下载。
docker images 查看下载成功
最后在宿主机浏览器中访问127.0.0.1:5000/v2/_catalog,出现上传的镜像。
在此路径下,可以查看上传到本地的镜像。