私有仓库概述
私有仓库是存储docker image的仓库。
管理了一个docker集群,在所有节点维护镜像的一致性是一个非常繁琐的任务,使用公共仓库又无法控制仓库中的镜像版本等数据,使用私有仓库是解决这些问题的最佳方法。
用户只需要维护私有仓库里面的镜像即可,docker客户端可以通过私有仓库创建容器服务。
主流仓库有docker Registry和vmware Harbor。
Registry提供了仓库的核心功能,包括分层传输机制、WEB接口等功能。
Harbor是在Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:提供WEB页面,优化用户体验,支持登录、搜索功能,区分公有、私有镜像,以及基于角色的访问控制,集成日志审计、支持水平扩展等功能。
配置私有仓库
仓库配置文件路径:/etc/docker-distribution/registry/config.yml
仓库数据存储路径:/var/lib/registry
默认端口号:5000
registry安装
# 安装私有仓库
[root@registry ~]# dnf install -y docker-distribution
# 设置开机自启动
[root@registry ~]# systemctl enable --now docker-distribution
客户端配置
[root@docker ~]# vim /etc/hosts
192.168.1.35 registry
# 修改配置文件
[root@docker ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://registry:5000"],
"insecure-registries":["registry:5000"]
}
# 重启服务生效
[root@docker ~]# systemctl restart docker
[root@docker ~]# docker info
上传镜像
# 镜像设置标签
[root@docker ~]# docker tag nginx:latest registry:5000/img/myimg:nginx
# 上传镜像
[root@docker ~]# docker push registry:5000/img/myimg:nginx
The push refers to repository [registry:5000/img/myimg]
c9d01852a13b: Pushed
......
nginx: digest: sha256:3e1fc9ad1ee46ee4619c95dc9d71034d919e53abfc size: 952
测试
查看镜像名称:curl http://仓库IP:5000/v2/_catalog
查看镜像标签:curl http://仓库IP:5000/v2/镜像路径/tags/list
# 查看仓库中所有镜像的名称
[root@docker ~]# curl http://registry:5000/v2/_catalog
{"repositories":["img/myimg", "library/httpd"]}
# 查看某一镜像的所有标签
[root@docker ~]# curl http://registry:5000/v2/img/myimg/tags/list
{"name":"img/myimg","tags":["nginx", "php-fpm"]}
创建容器
# 使用仓库中的镜像运行容器
[root@docker ~]# docker run -itd --rm registry:5000/img/myimg:nginx
2b7cd6d88a7665dbea0a4b3d99478e9f302c0a5661d7676d6d3bd3cb6d181