无法从 Docker 注册表远程 API 获得有效响应
Cannot get a valid response from Docker Registry remote API
我正在使用 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?
Docker 注册表没有 /images/json
API,并且 Docker 注册表的 API 与 docker 引擎不兼容API.
要获取 Docker Registry 的图像列表,请尝试 GET /v2/_catalog
。可以找到完整文档 here.
我正在使用 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?
Docker 注册表没有 /images/json
API,并且 Docker 注册表的 API 与 docker 引擎不兼容API.
要获取 Docker Registry 的图像列表,请尝试 GET /v2/_catalog
。可以找到完整文档 here.