Docker第七回(私有Registry)
一、Docker Registry的分类
Registry用来保存docker镜像,包括镜像的层次结构和元数据,用户可以自建Registry,也可以使用官方的docker hub
-
Sponsor Registry:第三方的Registry,供客户和docker社区使用
-
Mirror Registry:第三方的Registry,只让客户使用
-
Vendor Registry:由发布Docker镜像的供应商提供的Registry
-
Private Registry:通过设有防火墙和额外的安全层的私有实体提供的Registry
二、Docker Distribution
docker distribution是docker为我们提供的私有仓库软件包,它也可以运行在容器中。因此,在docker hub中有它的镜像。但是docker distribution并没有web界面,不支持像docker hub一样在web中浏览、搜索镜像,更不支持利用docker file实现在docker hub中自动构建镜像。要实现这个功能,可以使用harbor
1、docker distribution的安装方式
-
通过下载ducker hub上的docker distribution镜像来让它跑在容器中,因为容器一旦停止,数据将被删除的特性,我们还要为它提供存储卷,利用网络文件系统来持久化仓库中的镜像数据
-
yum安装,docker distribution的安装包在yum仓库的Extras中,可以直接安装
2、yum安装docker distribution
2.1、安装
2.2、配置
默认配置文件即可,根据自己需要更改
3、制作镜像并上传到docker-distribution
3.1、制作镜像并上传
# docker客户端默认使用https和Registry通信,如果私有仓库是http协议,需要更改docker客户端配置文件
3.2、docker distribution中验证
3.3、在docker客户端中删除刚才的镜像并重新获取
三、harbor是什么
harbor是由Google、IBM、Microsoft共同成立的CNCF(云原生计算基金会),一个专门维护k8s等项目的第三方组织。它维护的项目有k8s、prometheus等,包括刚刚加入的harbor(私有仓库服务器软件)项目。harbor现在已经是一个企业级的仓库应用程序。由VMWare在docker distribution的基础上做的二次开发项目,加入了很多额外的程序,包括一个web界面。所以,我们可以使用harbor来构建完整的本地私有仓库。
Project Harbor is an open source trusted cloud native Registry project that stores, signs, adn scans content。
Harbor extends the open source Docker Distribution by adding the functionalities usually required by users such as security,identity and management
Harbor supports advanced features such as user management,access control,activity monitoring, and replication between instances
1、harbor的特性
-
支持多租户,一个harbor可以让很多用户注册进来管理自己的仓库
-
支持安全、风险分析
-
支持审计日志
-
基于角色的访问控制
-
支持多个harbor间的replication
-
可扩展的api,ui图形界面
-
国际化的,当前支持english and chinese
2、harbor的安装
harbor官方为了简化它的安装,把harbor做成了在容器中运行的应用,由于harbor依赖于mysql、redis等很多存储系统。所以需要多个容器协同工作。因此vmware的harbor在部署和使用时需要借助docker的单机变盘工具compose
下载地址:https://github.com/goharbor/harbor/releases
安装文档:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
harbor安装成功后会启动8个容器。
注意:由于harbor的网络是nat,所以要开启防火墙服务,否则会安装不了。
最后安装成功的web界面
3、使用harbor web界面
3.1、创建新项目
3.2、点击新创建的项目,目前还没有任何镜像
3.3、使用docker客户端制作镜像并上传
3.4、从harbor中拉取镜像到docker客户端