docker (七)harbor私有仓库

本文详细介绍了如何部署和使用Harbor,一个强大的Docker私有仓库服务,包括配置参数、安装步骤和权限管理。通过Harbor,可以实现对Docker镜像的上传、下载权限控制,以及创建用户和项目,确保了镜像管理的安全性和便捷性。
摘要由CSDN通过智能技术生成

前言

前面的时候我们简单的了解的过registry的安装和使用

docker pull registry:latest
docker run -itd --name myregistry -p 5000:5000 registry:latest
docker tag nginx:latest 127.0.0.1:5000/nginx:v1
docker push 127.0.0.1:5000/nginx:v1
dokcker pull 127.0.0.1:5000/nginx:v1

但假如 我们想对上传镜像和 下载进行的操作进行权限管理,规定的用户才能在下载和修改指定的库中的内容,怎么才能实现这个功能?这个时候我们就可以用到harbor

一、harbor的简介

Harbor被部署为多个Docker容器,因此可以部署在任何支持Docker的Linux发行版本上

服务端主机需要安装的环境有Python、Docker、和Docker-compose

在k8s中,harbor也会用

harbor是用项目来管理镜像的,这样便于管理

二、部署Harbor服务

实验环境:
harbor服务端:192.168.100.21,docker、compose,harbor
client端:192.168.100.22,docker

第一台主机做私有仓库,第二台主机做客户端去进行访问验证
所需参数
这些参数必须在安装前进行设置,如果管理者想要更新他们,必须在改完参数之后再次安装,参数才会生效
工作原理

上面我们说了docker registry v2将安全认证暴露给了外部服务使用,那么是怎样暴露的呢?我们在命令行中输入docker login https://registry.qikqiak.com为例来为大家说明下认证流程:
. 1.docker client接收到用户输入的docker login 命令,将命令转化为调用engine api的RegistryLogin 方法
·2.在 RegistryLogin方法中通过http盗用registry服务中的auth方法
·3.因为我们这里使用的是v2版本的服务,所以会调用loginV2方法,在 loginV2方法中会进行/v2/接口调用,该接口会对请求进行认证
4.此时的请求中并没有包含token 信息,认证会失败,返回401错误,同时会在 header中返回去哪里请求认证的服务器地址
.5.registry client端收到上面的返回结果后,便会去返回的认证服务器那里进行认证请求,向认证服务器发送的请求的 header中包含有加密的用户名和密码
·6.认证服务器从header中获取到加密的用户名和密码,这个时候就可以结合实际的认证系统进行认证了,比如从数据库中查询用户认证信息或者对接ldap服务进行认证校验
·7.认证成功后,会返回一个token 信息,client端会拿着返回的 token再次向registry服务发送请求,这次需要带上得到的token,请求验证成功,返回状态码就是200. 8.docker client端接收到返回的200状态码,说明操作成功,在控制台上打印 Login Succeeded 的信息
至此,整个登录过程完成,整个过程可以用下面的流程图来说明:

在这里插入图片描述

1、下载软件包

[root@docker ~]# hostnamectl set-hostname harbor
[root@docker~]# su
[root@harbor ~]# yum install wget -y;wget http:// harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
[root@harbor ~]# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

2、配置文件的参数解读

所需参数
这些参数必须在安装前进行设置,如果管理者想要更新他们,必须在改完参数之后再次安装,参数才会生效

可选参数
这些参数对于更新时可选的,即管理者可以将其保留为默认值,在启动后可以在web端上进行修改更新

如果进入harbor.cfg,只会在第一次启动Harbor时生效,随后对这些参数的更新,Harbor将被忽略

备注:

如果选择通过WEB设置这些参数,必须得在启动Habor后只有admin这个管理员用户的情况下操作;当harbor中有除了admin之外的用户时,auth_mode不能被修改;所以,设置参数要趁早

[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# ls
common  docker-compose.clair.yml  docker-compose.notary.yml  docker-compose.yml  harbor_1_1_0_template  harbor.cfg  harbor.v1.2.2.tar.gz  install.sh  LICENSE  NOTICE  prepare  upgrade
[root@harbor harbor]# vim /usr/local/harbor/harbor.cfg
修改第五行的hostname为本地ip,不要使用localhost或127.0.0.1,因为Harbor需要由外部客户机访问
hostname = 192.168.100.21

在这里插入图片描述

## 配置文件Harbor

#访问管理用户界面和注册表服务的IP地址或主机名。
#不要使用localhost或127.0.0.1,因为Harbor需要由外部客户机访问。
hostname = reg.mydomain.com

#用于访问UI和令牌/通知服务的协议,默认情况下是http。
#如果在nginx上启用了ssl,则可以将其设置为https。
ui_url_protocol = http

#mysql db的db_auth的根用户的密码,在任何生产使用之前更改,mysql db内存放的是用户验证信息,当用户登录时的账号密码会与mysql的内容进行比对,如果正确,就会给用户一个30分钟的临时令牌token
db_password = root123

#镜像复制作业线程最大数量。
max_job_workers = 3 

#确定是否为注册中心的令牌生成证书。
#如果该值为on,那么prepare脚本将创建新的根证书和私钥,以生成访问注册中心的令牌。如果该值为off,则使用默认的密钥/证书,也可以指定外部来源的根证书/密钥
#此标志还控制公证员证书的创建。
customize_crt = on

#nginx的cert和密钥文件的路径,它们只应用于协议设置为https
ssl_cert = /data/cert/server.crt
#证书的路径,仅当协议设置为 https 时才应用。
ssl_cert_key = /data/cert/server.key
#密钥的路径,仅当协议设置为 https 时才应用。

#密钥存储的路径,用于在复制策略中加密或解密远程 register 密码的密钥路径。
secretkey_path = /data

#Admiral's url, 注释此属性, or 将其值设置为NA when Harbor is 独立
admiral_url = NA

#Clair的postgres数据库的密码,只有在使用Clair部署Harbor时才有效。
#请在部署之前更新它,后续更新将导致Clair的API服务器和Harbor无法访问Clair的数据库。
clair_db_password = password

#注意:开始初始属性和结束初始属性之间的属性只在第一次引导时生效,这些属性的后续更改应该在web ui上执行

#开始初始属性,即可选参数,此处为分界线,上面是所需参数

#电子邮件帐户设置发送密码重置电子邮件。

#电子邮件服务器使用给定的用户名和密码在到主机的TLS连接上进行身份验证并充当身份。
#身份留空作为用户名。
email_identity = 
#Harbor需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才需要。
#请注意,在默认情况下SSL连接时没有启用。如果SMTP服务器需要SSL,但不支持STARTTLS
#那么应该通过设置启用SSL email_ssl = TRUE。
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false

##Harbor管理员的初始密码,只有在Harbor启动时才有效。
#在第一次启动之后就没有效果了
#启动后从用户界面更改管理员密码。默认的用户名/密码是 admin/Harbor12345。
harbor_admin_password =
### 回答1: 要登录Harbor私有仓库,需要执行以下步骤: 1. 在本地安装Docker客户端。 2. 打开终端或命令行界面。 3. 运行以下命令:`docker login <Harbor仓库地址>`。 4. 输入用户名和密码,按照提示完成登录。 例如,如果Harbor仓库地址为`harbor.example.com`,则登录命令为:`docker login harbor.example.com`。 ### 回答2: Docker是一个开源的容器化平台,可以将开发人员的应用程序打包成一个容器,方便部署和管理,Harbor是一个开源的企业级Docker镜像仓库,可以用于私有镜像的存储和管理。如果你想要在Docker中登录Harbor私有仓库,可以按照以下步骤操作: 步骤一:安装docker客户端 在登录Harbor之前,需要先安装Docker客户端,如果你已经安装Docker客户端,则可以跳过此步骤。如果还没有安装,可以在官网上下载并安装,具体步骤可以参见官网的相关文档。 步骤二:获取Harbor私有仓库地址 在登录Harbor之前,需要获取Harbor私有仓库的地址,这个地址可以在Harbor的管理界面中查看,也可以询问管理员。 步骤三:创建docker登录凭证 在通过Docker客户端登录Harbor私有仓库之前,需要先创建一个docker登录凭证,这个凭证可以在Harbor的管理界面中进行创建,具体步骤可以参见官网的相关文档。 步骤四:使用docker登录Harbor私有仓库 创建好docker登录凭证之后,就可以使用docker登录Harbor私有仓库了。打开终端或命令行窗口,输入以下命令进行登录: docker login -u <用户名> -p <密码> <Harbor仓库地址> 其中,<用户名>代表你在Harbor上注册的用户名,<密码>代表你在Harbor上注册的密码,<Harbor仓库地址>代表你在Harbor上创建的私有仓库地址。 登录成功之后,就可以使用docker拉取或推送镜像了。如果需要退出登录,可以使用以下命令进行退出: docker logout <Harbor仓库地址> 总结:以上是在Docker中登录Harbor私有仓库的步骤,需要先安装Docker客户端,获取Harbor私有仓库的地址,创建docker登录凭证,然后使用docker命令进行登录和退出。需要注意的是,在登录Harbor私有仓库之前,需要在Harbor的管理界面中进行相应的配置和设置。 ### 回答3: Docker 是一个开源的应用程序容器引擎,可以在单个操作系统实例上轻松管理和运行容器化的应用程序。而 Harbor 是一个可信任的企业级容器注册中心,提供了一个安全的存储和分发容器镜像的平台。 在使用 Harbor 私有仓库之前,需要先进行 Docker 登录 Harbor 私有仓库的操作。 首先,在需要登录的机器上安装 Docker。在安装完成后,在终端中运行以下命令来登录 Harbor 私有仓库: ```bash docker login <your-registry-url> ``` 其中,`<your-registry-url>` 是你的 Harbor 私有仓库的 URL 地址。如果你的 Harbor 服务器位于本地主机,则其地址为 `localhost:port`,其中 `port` 为你的 Harbor 端口号。 执行以上命令后,终端将提示您输入 Docker Hub 账户的用户名和密码。如果您在 Harbor 中没有注册账户,可以使用以下命令创建一个新的账户: ```bash docker run -it --rm --name harbor-cli -v /data/soft/harbor:/data -v /etc/localtime:/etc/localtime:ro harbor.vbillbank.com/library/cli:v1.8.0 \ /usr/local/bin/harbor registry login -u <username> -p <password> https://<your-registry-url> ``` 其中,`-v` 参数用于指定将本地文件夹挂载到容器中,并且请将 `<username>` 和 `<password>` 替换为您的账户信息。 如果您的登录信息正确,终端将输出: ```bash Login Succeeded ``` 这时,就可以开始使用 Harbor 私有仓库中的镜像了。如果您的 Harbor 服务器配置了访问控制,那么在登录时还需提供相应的凭据。同时,还可以使用 `docker logout` 命令来退出登录。 以上就是 Docker 登录 Harbor 私有仓库的详细步骤了。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值