docker私有仓库的建立

一、registry和harbor

registry只是纯字符集仓库,harbor是有自己的界面的
harbor的存放位置就是registry,registry只是harbor的一个组件
harbor由7个容器组成,其中一个就是registry
Harbor被部署为多个Docker容器,因此可以部署在任何支持 Docker 的 Linux发行版上。(registry 为其核心组件)
Harbor 比 registry相比好处是: harbor支持多种功能、图形化界面管理、多用户权限、角色管理机制、安全机制

docker images 保存的位置

[root@localhost ~]#  cd /var/lib/docker/image/
[root@localhost image]# ls
overlay2

二、建立私有仓库

[root@localhost ~]# docker pull registry               直接下载

在这里插入图片描述
##这里要添加加速文件##

[root@localhost ~]# vim /etc/docker/daemon.json 
"insecure-registries":["192.168.133.101:5000"],    第二行增加此句

在这里插入图片描述

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
824be90701645f27f8b90b50d0cb5f985c189ef9b452c8c8741ae1c6beed4fbc
-d 守护进程 -p 指定端口 -v设定挂载目录 最后一个registry 启动仓库

在这里插入图片描述
查看仓库内的镜像,目前为空

[root@localhost ~]# curl -XGET http://192.168.133.101:5000/v2/_catalog
{"repositories":[]}  
 #v2是版本 _catalog是查看数据

把本地镜像推送到仓库内
不能直接推送,必须先打标记
在这里插入图片描述

[root@localhost ~]# docker tag nginx:v4 192.168.133.101:5000/nginx
默认是根

在这里插入图片描述
上传镜像

[root@localhost ~]# docker push 192.168.133.101:5000/nginx

在这里插入图片描述
从私有仓库下载
先移出原镜像

[root@localhost ~]# docker rmi 192.168.133.101:5000/nginx

在这里插入图片描述
从私有仓库下载镜像

[root@localhost ~]# docker pull 192.168.133.101:5000/nginx

在这里插入图片描述

三、Harbor服务

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。

1、主要的特征

多租户签名和验证
安全和漏洞扫描
身份识别和基于角色的访问控制
实例间的镜像复制
可扩展的API和图形用户界面
国际化(多国语音支持,含中文)

2、Harbor 的主要功能

基于角色的访问控制
用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
基于镜像的复制策略
镜像可以在多个Registry实例中复制(可以将仓库中的镜像同步到远程的Harbor,类似于MySQL主从同步功能),尤其适合于负载均衡,高可用,混合云和多云的场景。
图形化用户界面
用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
支持 AD/LDAP
Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
镜像删除和垃圾回收
Harbor支持在Web删除镜像,回收无用的镜像,释放磁盘空间。image可以被删除并且回收image占用的空间。
审计管理
所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
RESTful API
RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。
部署简单
提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。

四、Harbor架构

在这里插入图片描述
如上图所描述,Harbor由6个大的模块所组成:

Proxy: Harbor的registry、UI、token services等组件,都处在一个反向代理后边。该代理将来自浏览器、docker clients的请求转发到后端服务上。
Registry: 负责存储Docker镜像,以及处理Docker push/pull请求。因为Harbor强制要求对镜像的访问做权限控制, 在每一次push/pull请求时,Registry会强制要求客户端从token service那里获得一个有效的token。
Core services: Harbor的核心功能,主要包括如下3个服务:
1)UI: 作为Registry Webhook, 以图像用户界面的方式辅助用户管理镜像。
2) WebHook:WebHook是在registry中配置的一种机制, 当registry中镜像发生改变时,就可以通知到Harbor的webhook endpoint。Harbor使用webhook来更新日志、初始化同步job等。
3) Token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。

Database:为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。
Job services: 主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上。
Log collector: 负责收集其他组件的日志到一个地方
这里我们与上面运行的7个容器对比,对harbor-adminserver感觉有些疑虑。其实这里harbor-adminserver主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui所要操作的所有数据都通过harbor-adminserver这样一个数据配置管理中心来完成。

五、部署harbor

服务端主机需要安装 Python、Docker和 Docker Compose。(web环境支持的是PY语言故需要安装Python)
关于Harbor.cfg配置文件中有两类参数:所需参数和可选参数
(1)所需参数
这些参数需要在配置文件Harbor.cfg中设置。如果用户更新它们,必须要运行install.sh脚本重新安装Harbor,参数将生效。具体参数如下:
hostname:用于访问用户界面和register服务。它应该是目标机器的IP地址或完全限定的域名(FQDN)
例如192.168.226.130 或hub.kgc.cn。不要使用 localhost或127.0.0.1为主机名。

ui_url_protodol:(http或 https,默认为http)用于访问u和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为https。(身份验证时会向Mysql数据库进行比对然后授予令牌)

max_job_workers:镜像复制作业线程。

db_password:用于db_auth 的MySQL数据库root 用户的密码。·

customize_crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为 off。

ssl_cert:SSL 证书的路径,仅当协议设置为 https 时才应用。

ssl_cert_key:SSL 密钥的路径,仅当协议设置为 https 时才应用。

secretkey_path:用于在复制策略中加密或解密远程 register 密码的密钥路径。

(2)可选参数
这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在 Web UI 上进行更新。如果进入 Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数 的更新,Harbor.cfg 将被忽略。
注意:如果选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。具体来说,必须在注册或在 Harbor 中创建任何新用户之前设置所需的auth_mode。当系统中有用户时(除了默认的 admin 用户),auth_mode 不能被修改。具体参数如下:

Email:Harbor需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才需要。请注意,在默认情况下SSL连接时没有启用。如果SMTP服务器需要SSL,但不支持STARTTLS,那么应该通过设置启用SSL email_ssl = TRUE。

harbour_admin_password:管理员的初始密码,只在Harbour第一次启动时生效。之后,此设置将被忽略,并且应 UI中设置管理员的密码。请注意,默认的用户名/密码是 admin/Harbor12345。

auth_mode:使用的认证类型,默认情况下,它是 db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为 ldap_auth。

self_registration:启用/禁用用户注册功能。禁用时,新用户只能由 Admin 用户创建,只有管理员用户可以在 Harbour中创建新用户。注意:当 auth_mode 设置为 ldap_auth 时,自注册功能将始终处于禁用状态,并且该标志被忽略。

Token_expiration:由令牌服务创建的令牌的到期时间(分钟),默认为 30 分钟。

project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下, 每个人都可以创建一个项目。如果将其值设置为“adminonly”,那么只有 admin 可以创建项目。

verify_remote_cert:打开或关闭,默认打开。此标志决定了当Harbor与远程 register 实例通信时是否验证 SSL/TLS 证书。将此属性设置为 off 将绕过 SSL/TLS 验证,这在远程实例具有自签名或不可信证书时经常使用。
另外,默认情况下,Harbour 将镜像存储在本地文件系统上。在生产环境中,可以考虑 使用其他存储后端而不是本地文件系统,如 S3、Openstack Swif、Ceph 等。但需要更新 common/templates/registry/config.yml 文件。

安装

需要harbor和docker-compose
在这里插入图片描述

[root@localhost opt]# tar xf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

在这里插入图片描述

[root@localhost local]# cd /usr/local/harbor/

在这里插入图片描述

配置文件

[root@localhost harbor]# vim harbor.cfg

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

[root@localhost harbor]# cat docker-compose.yml 

在这里插入图片描述
。。。

启动harbor

[root@localhost harbor]# sh install.sh 

在这里插入图片描述
在这里插入图片描述

展示

在这里插入图片描述
在这里插入图片描述
点击登录
在这里插入图片描述
右上角可选择语言
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

日志

在这里插入图片描述

用户管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
密码要求
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后我们就可以去项目里添加用户了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置管理(可选参数)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

登录

[root@localhost harbor]# docker login -u admin -p Harbor12345 http://192.168.133.101

但是报错,访问被拒绝,所以地址只能是127.0.0.1
在这里插入图片描述

[root@localhost harbor]# docker pull cirros                    下载测试的轻量型操作系统

在这里插入图片描述

上传镜像

[root@localhost harbor]# docker tag cirros 127.0.0.1/public-zy/cirros:v1     打标签

在这里插入图片描述

[root@localhost harbor]# docker push 127.0.0.1/public-zy/cirros:v1            上传镜像

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下载镜像

删除宿主机上的镜像

[root@localhost harbor]# docker rmi 127.0.0.1/public-zy/cirros:v1

下载

[root@localhost harbor]# docker pull 127.0.0.1/public-zy/cirros:v1

在这里插入图片描述
在这里插入图片描述

退出登录

[root@localhost harbor]# docker logout
Removing login credentials for https://index.docker.io/v1/

把harbor放在公网

跟建立私网方式一样

添加加速文件然后

[root@localhost ~]# vim /etc/docker/daemon.json 
"insecure-registries":["192.168.133.101:5000"],    第二行增加此句

在这里插入图片描述

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

修改配置

[root@localhost system]# pwd
/usr/lib/systemd/system
[root@localhost system]# vim docker.service

在这里插入图片描述

--insecure-registry 192.168.133.101                         ip为harbor地址

在这里插入图片描述
现在直接用网址就可以登录了

[root@localhost ~]# docker login -u admin -p Harbor12345 http://192.168.133.101

在这里插入图片描述

[root@localhost ~]# docker tag cirros 192.168.133.101/public-zy/cirros:v1
[root@localhost ~]# docker push 192.168.133.101/public-zy/cirros:v1

在这里插入图片描述
删除镜像

[root@localhost ~]# docker rmi 192.168.133.101/public-zy/cirros:v1

在这里插入图片描述
下载镜像

[root@localhost ~]# docker pull 192.168.133.101/public-zy/cirros:v1

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值