Docker API NodeJS

我正在使用nodeJS request库来调用一个unix域套接字,特别是Docker API。 这工作正常,并返回容器的列表。

 curl --unix-socket /var/run/docker.sock http:/v1.24/containers/json 

但是,这返回一个400400 Bad Request ,我不知道为什么

 var request = require('request'); request('http://unix:/var/run/docker.sock:http:/v1.24/containers/json', headers="Content-Type': 'application/json" , function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) } else { console.log("Response: " + response.statusCode + body) } }); 

虽然这可以通过请求来完成,但我会考虑使用Dockerode作为Docker API的Node SDK,因为它可以正确处理标题,并避免类似400错误请求的问题。 这是NPM链接Dockerode NPMJS

确保在运行容器时安装docker套接字

 docker run --name containera \ -v /var/run/docker.sock:/var/run/docker.sock \ yourimage 

给这个镜头列出你的容器:

  let options = { socketPath: '/var/run/docker.sock', path: `/v1.26/containers/json`, method: 'GET' }; let clientRequest = http.request(options, (res) => { res.setEncoding('utf8'); let rawData = ''; res.on('data', (chunk) => { rawData += chunk; }); res.on('end', () => { const parsedData = JSON.parse(rawData); console.log(parsedData); }); }); clientRequest.on('error', (e) => { console.log(e); }); clientRequest.end();