docker registry(私有仓库)
1.从公有仓库中下载镜像比较慢 ,比如docker run执行一个命令假设本地不存在的镜像,则会去共有仓库进行下载。
2.如果要是2台机器之间进行拷贝,则拷贝的是完整的镜像更消耗空间。
3.如果1个机器上传私有仓库,其他机器均可使用私有仓库的镜像,比较快。
缺点:
1.因为没有认证,谁都可以对私有仓库进行上传和下载,重点是还能够将别人上传的镜像进行覆盖,导致镜像失去了原来的属性,最好放在内网进行使用。
创建私有仓库
为了方便,我这边直接将仓库镜像上传宿主机上
导入镜像
docker load -i registry.tar.gz
##普通的registry,创建启动私有仓库
#--restart=always 表示:无论docker是否重启,容器都会启动
#-v 表示:宿主机路径挂载到容器路径
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry
上传镜像到私有仓库
a:给镜像打标签
#如果要是私有仓库就自己使用的话,就不需要加名字,直接镜像名称即可
docker tag alpine:latest 192.168.111.10:5000/quyunlong/alpine:latest
b:上传镜像
docker push 192.168.111.10:5000/quyunlong/alpine:latest
上传镜像成功到私有仓库
上传镜像到私有仓库,如果遇到报错(报错意思就是人家是https的,你上传是http的,不信任):
The push refers to repository [192.168.111.10:5000/quyunlong/alpine]
Get "https://192.168.111.10:5000/v2/": http: server gave HTTP response to HTTPS client
解决方法:
#添加信任
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.111.10:5000"]
}
#重启docker
systemctl restart docker
注意,如果要是daemon.json配置文件中有多个配置则需要逗号进行分隔
从浏览器上访问http://192.168.111.10:5000/v2/_catalog能看到自己上传的镜像
根据获取的信息进行查看上传的镜像版本
http://192.168.111.10:5000/v2/quyunlong/alpine/tags/list