web*_*jay 1 node.js coffeescript docker
我在我的一台服务器上设置并运行了Docker,可以像这样远程连接到它:
docker --tlsverify -H tcp://web2.webcom.dk:4243 images
我想做的是能够通过Node.js连接到它并尝试使用dockerode,这对我来说似乎是最好的选择.
这是我的代码:
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
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为我收到此错误:
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
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?
Run Code Online (Sandbox Code Playgroud)
但如果我使用我的远程主机IP和端口,我得到这个:
{ [Error: Parse Error] bytesParsed: 0, code: 'HPE_INVALID_CONSTANT' }
Run Code Online (Sandbox Code Playgroud)
如何连接到我的远程主机?
这是一个HTTP PARSER ERROR,因为您的dockerd用于表示HTTPS并且您正在使用HTTP来连接它.如果使用tls,则必须将prococol字段设置为https.这是我的配置:
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')
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1233 次 |
| 最近记录: |