如何在web应用程序中使用\connect-to-sonatenexus-dockerregistryv2api



我有一个私人的sonatenexus存储库管理器OSS 3.25.1-04容器在一个vm上运行(nginx从docker.io路由到repo管理器url(,该vm包含几个存储库,其中一个是docker注册表。

我想使用react应用程序中的docker registry v2 api来获得存储库中docker映像的列表,也许还有一些关于repo及其内容的更多指标。

我尝试直接调用api:https://nexus3:8083/v2/_catalog,但在检查devtools网络选项卡时,在响应中得到了401 UnAuthorized

然后,为了登录到api,我尝试使用https://auth.docker.io/token?service=registry.docker.io&scope=repository:samalba/my-app:pull,push,用我自己的注册表和示例docker映像替换samalba/my-app。我知道这个链接是为了只获取这个图像的令牌。找不到整个api的令牌(无论如何都不起作用(

可以使用一些关于如何连接到api\get-jwt令牌并使用它的帮助,或者如何将api与http一起使用而不是

可能会发生一些事情。首先,尝试使用基本身份验证,看看它是否有效。此外,您可能需要设置一些额外的标头来连接到nexus/sontype。这里有一个卷曲的例子:

curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Content-Type: application/json" -H "User-Agent: docker/20.10.14" -u username:password -i https://nexus3:8083/v2/_catalog

注意用户代理字段——我遇到了身份验证层过滤掉docker用户代理的问题

如果这仍然不起作用,那么您可以查找的下一件事是查看具有标头www-authenticate的注册表是否响应。这意味着您需要首先使用该服务进行身份验证以检索Bearer令牌,然后可以使用Authorization标头而不是基本身份验证将其传递回注册表。

希望能有所帮助。

最新更新