通过Node.js连接到远程Docker

我有一个Docker在我的一台服务器上build立并运行,可以像这样远程连接到它:

docker --tlsverify -H tcp://web2.webcom.dk:4243 images

我用这个和这个来设置它。

我想要做的是能够通过Node.js连接到它,并试图用dockerode这对我来说似乎是最好的select。

这是我的代码:

 Docker = require 'dockerode' docker = new Docker host: 'tcp://web2.webcom.dk' port: 4243 tls: true tlscacert: '/Users/jacob/.docker/ca.pem' tlscert: '/Users/jacob/.docker/cert.pem' tlskey: '/Users/jacob/.docker/key.pem' tlsverify: true container = docker.getContainer '826544226fdc' container.start (err, data) -> return console.error err if err? console.log data 

这不工作,但我得到这个错误:

 { [Error: connect ECONNREFUSED] code: 'ECONNREFUSED', errno: 'ECONNREFUSED', syscall: 'connect' } 

有任何想法吗?

UPDATE

这在当地工作:

 Docker = require 'dockerode' docker = new Docker host: '192.168.59.103' port: 2375 socketPath: false docker.run 'ubuntu', ['bash', '-c', 'uname -a'], process.stdout, (err, data, container) -> return console.error err if err? 

但是,如果我使用我的远程主机IP和端口,我得到这个:

 { [Error: Parse Error] bytesParsed: 0, code: 'HPE_INVALID_CONSTANT' } 

我怎样才能连接到我的远程主机?

这是一个HTTP PARSER ERROR ,因为你的dockerd使用HTTPS,而你使用HTTP来连接它。 如果您使用tls,则必须将prococol字段设置为https 。 这是我的configuration:

 docker: { host: '192.168.59.103' port: 2376 protocol: 'https' ca: fs.readFileSync(process.env.DOCKER_CERT_PATH + '/ca.pem') cert: fs.readFileSync(process.env.DOCKER_CERT_PATH + '/cert.pem') key: fs.readFileSync(process.env.DOCKER_CERT_PATH + '/key.pem') }