问题标签 [harbor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - 港口:拉取打开图像需要登录
我正在尝试访问由 Harbor 提供的私有 docker 注册表。注销时,拉取n.n.n.n/some_path/some_image:some_tag
将导致找不到图像的错误消息。图片不是私人的。当我登录时
拉动工作正常。
我认为这是错误的(或者是吗?)。我是否错误地配置了 Harbor 服务器?
macos - 为什么不能在普通 HTTP 情况下登录到 Harbor 服务器表单客户端?
在主机上安装了港口。使用纯 HTTP 协议。
IP是192.168.33.10
。
我可以从港口服务器本身登录:
并且可以从浏览器访问它:
但无法从其他客户端(Mac,安装 docker 使用它)登录。错误信息是:
从 Harbor 文档中有这样的通知:
https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
重要提示:Harbor 的默认安装使用 HTTP - 因此,您需要将选项 --insecure-registry 添加到客户端的 Docker 守护程序并重新启动 Docker 服务。
港口主机和客户端主机集/etc/docker/daemon.json
:
并重新启动泊坞窗。但是,它不起作用。
如果现在不在HTTPS协议下设置harbor,有没有办法从客户端正确访问它?
docker - 如何从 Kubernetes 集群中的 Harbor 注册表获取 docker 镜像?
在一台主机(192.168.33.10)上安装了 Harbor。
在其他主机上安装了 Kubernetes 集群。
成功将 docker 镜像从客户端推送到 Harbor 主机。在 Kubernetes 主控主机上,我还可以成功地从 Harbor 主机拉取该映像:
但我创建了一个 Kubernetes 部署 yaml 文件:
然后运行kubectl create -f deployment.yaml
从 Kubernetes 仪表板显示:
我已经设置好insecure-registries
了/etc/docker/daemon.json
:
如何从 Kubernetes 获得它?
编辑
我在 Rancher 服务器集群上使用 Kubernetes。即使我设置了Harbor服务器的IP,用户名和密码,它也无法访问:
kubernetes - minikube 无法访问远程 Harbor 注册表
甚至使用 启动 minikube minikube start --insecure-registry "<HARBOR_HOST_IP>"
,当尝试运行包含image
类似路径的部署 yaml 文件时<HARBOR_HOST_IP>/app/server
,出现错误:
无法拉取图像“[HARBOR_IP]/app/server”:rpc 错误:代码 = 2 desc = 来自守护进程的错误响应:{“message”:“获取https://[HARBOR_IP]/v1/_ping:拨打 tcp [HARBOR_IP ]:443: getsockopt: 连接被拒绝"} 同步 pod 时出错
如何insecure-registry
在 minikube 中正确设置?
编辑
使用 80 端口标记当前 docker 映像:
将其推送到 Harbor 注册服务器:
不幸的是,远程 Harbor 主机被拒绝:
甚至添加<HARBOR_HOST_IP>:80
到本地insecure-registries
列表中。
docker - VMWare Harbor:如何将注册表指向特定目录以用作数据存储
我正在将 VMWare Harbor 设置为映像注册表(就像 docker 受信任的注册表一样),我不确定它当前配置在哪里存储推送后的映像。
我找不到有关如何执行此操作的文档,所以我的问题是:我将如何映射 Harbor 以将图像存储在(/data01)
已经为图像分配磁盘空间的特定目录中?
docker - 无法访问 Kubernetes 集群上的新 Harbor 部署
第一次尝试 VMWare 的 Harbor 注册服务器,并将其作为新 Kubernetes 集群上的部署进行尝试。
遵循Harbor on Kubernetes指南后,所有 Harbor 资源都已应用到 k8s 集群上,并且可以看到运行良好。但是,我目前无法从网络浏览器访问 Harbour ui(我只是得到“无法连接”)。我的猜测是安全性设置不正确,缺少某些东西或放在错误的地方?
该make/harbor.cfg
文件配置为:
hostname = k8s-dp-2
# 这是运行 Harbor 的工作节点..
ui_url_protocol = https
ssl_cert = /path/to/cert/on/host/harbor.crt
ssl_cert_key = /path/to/cert/on/host/harbor.key
secretkey_path = /data
我假设上面证书的路径是主机上的路径,python 脚本将从该路径获取文件然后进行 YAML 构建?
- - 更新 - -
在评论中给出建议后,我现在已经在 k8s 集群中配置了一个 nginx 入口控制器。添加这个入口控制器后,我更新了 Harbor 配置以使用 http 而不再使用 https,因为 https 部分现在应该由 nginx 入口控制器处理。然而,随着这些配置更改到位,我仍然无法通过 https 访问 Harbor 服务,但我现在可以通过 kubernetes 集群的 http 端口调用 Harbor 服务。请参阅下面的测试
# kubectl get svc -n=nginx-ingress
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-ingress NodePort 10.103.165.23 <none> 80:31819/TCP,443:30435/TCP 20h
测试调用 1:
测试呼叫 2:
测试电话 3:
测试呼叫 4:
docker - 为什么直接输入在harbor中不起作用?
我使用 Docker 登录--username=xx --password=xx 192.168.0.92:7082
,但它不起作用!
我使用 Docker login192.168.0.92:7082
或 docker login --username=xx 192.168.0.92:7082
。可以登陆harbor了,不知道为什么?是不是必须用docker login然后输入用户名再输入密码?为什么直接输入不行?</p>
docker - 使用 Harbor 复制时出现 401“需要身份验证”
我已经使用 vmware-harbor v1.5.0 部署了一个私有 docker 注册表。虽然它可以与大多数功能一起使用,例如登录和拉/推图像,但是当我尝试使用 [管理] -> [复制] 时,总是会出现“需要身份验证”的错误。
以下是港口复制错误详细信息:
2018-08-06T06:57:41Z [INFO] 初始化完成:存储库:ops/test,标签:[3.4.11],源注册表:URL - http ://registry.xx.com insecure-true,目标注册表: URL - https://registry-slave.xx.com insecure-false
2018-08-06T06:57:41Z [警告] 在目标注册表上创建项目操作时状态码为 409,尝试执行下一步
2018-08-06T06:57:41Z [错误] [job_logger.go:81]:从源注册表中提取 ops/zookeeper:3.4.11 的清单时发生错误:401 {"errors":[{"code": "UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"ops/test","Action":"pull "}]}]
如上所述,UNAUTHORIZED 错误似乎是由于从本地提取图像而不是由于远程引起的。事实上,远程注册中心已经通过了【管理】->【注册中心】创建页面中的“测试连接”。
我想知道,是否有一些指定的配置应该设置为使用复制功能?从本地提取图像时使用了哪个角色?
所以我尝试阅读harbor源代码并在第230行的jobservice/job/impl/replication/transfer.go中找到错误消息引发点:
acceptMediaTypes := []string{schema1.MediaTypeManifest, schema2.MediaTypeManifest}
digest, mediaType, payload, err := t.srcRegistry.PullManifest(tag, acceptMediaTypes)
if err != nil {
t.logger.Errorf("an error occurred while pulling manifest of %s:%s from source registry: %v",
t.repository.name, tag, err)
return "", nil, err
如上代码,似乎从来没有考虑过 401 http 代码,acceptMediaTypes 是一些处理媒体类型的 http 标头,而不是身份验证。那么harbor如何从本地提取图像?
环境:
linux:Red Hat Enterprise Linux Server 7.5 版(迈坡)
港口:v1.5.0
码头工人(客户端和服务器):17.12.1-ce
网络拓扑:
nginx (https:443) -> 港口 (http:8082)
nginx和harbor都部署在同一个KVM上
“registry-test.xx.com”在 DNS 中解析
我更想知道有人成功使用harbor的复制功能...
所以任何人都可以帮我或只是一些提示?非常感谢~
更多细节:08-07
尝试从本地 KVM 获取一些 wireshark 信息
如图所示,“/service/token”请求已经发送,并且得到了正确的token,但是后面的manifest请求没有携带anthenticate token,所以失败了。所以我不知道令牌缓存发生了什么。
docker - Harbor 注册表安装/升级
我最近开始使用名为 Harbor 的 docker 镜像注册表。我找不到任何与此相关的标签。
我的场景:在其中一台工作的服务器中,安装了 Harbor,以及 docker、docker compose 等。Harbor 站点运行良好。Harbor 本身基本上就是一个容器,这意味着可以在服务器上运行多个容器。我需要为开发团队提供 Harbor v1.7。从安全角度来看,它更好,并且具有良好的 LDAP 集成。我们托管的Harbor是非常旧的版本:0.4.5。
我的问题:
我搜索并找不到包含两个容器的方法,只有如何升级。如果前者是可能的,那么您能否建议我应该如何去做?需要更改哪些配置文件等?任何链接也将不胜感激。目前所有的选择都是升级现有的容器,这是更多的工作。目前我的目标是盲目的。由于要求是使用 postgressql 的 v1.7,而 mysql 只使用到 v1.5。如果我进行升级,是否会在表、架构和数据库结构方面引起很多问题?