0%

解决Nexus Docker仓库无法搜索镜像(错误代码500)

使用docker search来搜索镜像会返回500错误:

1
2
[root@localhost:~]# docker search idocker.io/hello-world
Error response from daemon: Unexpected status code 500

因为平常不怎么使用搜索,而且Nexus前台也有镜像浏览页面,所以一直没花时间去解决。年前封网好不容易有点空闲,寻思着解决下。

经过定位,发现了问题所在:Nexus里面的Docker有3种类型仓库:group、hosted、proxy,也就是组合仓库、本地仓库和代理仓库,其中组合仓库就是本地仓库和代理仓库的聚合,通过测试发现只有本地仓库才支持search请求,其他2种类型仓库都会500错误。所以,报错的直接原因就是我将search的请求转发到了组合仓库导致的。

解决办法非常简单,在nginx转发里面加一条规则即可:

1
2
3
if ($request_uri ~ '/search') {
set $upstream "nexus_docker_put";
}