我有一个私人的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
标头而不是基本身份验证将其传递回注册表。
希望能有所帮助。