无法从Docker Registry远程API获得有效响应

时间:2016-09-29 01:10:17

标签: node.js api docker docker-registry

我正在使用Nodejs& request用于形成我的API调用,我可以使用它直接向UnixSocket进行API调用,但是当我从运行的Docker注册表容器请求时,它每次尝试失败,所以我认为这是我的注册表配置的错误。

我已将其设置为开箱即用的just like the doc步骤。

docker run -d -p 5000:5000 --restart=always --name registry registry:2
docker pull alpine
docker tag alpine localhost:5000/alpine
docker push localhost:5000/alpine

我用来请求的代码如下,它会收到404 not found

  const request = require('request')
  request({
    method: 'GET',
    uri: 'http://localhost:5000/images/json', // status 404
    // uri: 'http://unix:/var/run/docker.sock:/images/json', // this works 
    headers: { host : 'localhost' }
  }, (e, res, body) => {
    if(e) return console.error(e)
    console.log(res.statusCode == 200 ? JSON.parse(body) : res.statusCode)
  })

很明显,这段代码只是为了证明我正在做一个格式正确的GET请求。

允许正在运行的注册表容器响应远程API需要做些什么?

1 个答案:

答案 0 :(得分:2)

Docker Registry没有/images/json API,Docker Registry的API与docker engine API不兼容。

要获取Docker Registry的图像列表,请尝试GET /v2/_catalog。可以找到完整的文档here