2014-09-07 4 views
1

У меня Docker установлен и запущен на одном из моих серверов и может подключаться к нему удаленно, как это:Подключение к удаленному Докер через Node.js

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

Я использовал this и this, чтобы получить его установить вверх.

Что я хотел бы сделать, так это подключиться к нему через 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 

Это не работает, хотя, как я получаю эту ошибку:

{ [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' } 

Как я могу подключиться к удаленной хозяйничать?

+0

Возможно, для тех, кто не сразу признает это, стоит указать код [CoffeeScript] (http://coffeescript.org/). –

ответ

5

Это HTTP PARSER ERROR, потому что ваш докерд просматривает 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') 
} 
+0

правильно, я даже ответил, что сам для кого-то еще: https://github.com/apocas/dockerode/issues/100#issuecomment-59598714 хороший цикл – webjay

Смежные вопросы