2017-08-15 77 views
0

我是新來泊塢窗,我有一些困難,瞭解我應該如何使用它發送指令到泊塢窗機。使用泊塢窗SDK從一個Web應用程序

現在,我想知道,如果這是很有意義的嘗試使用像Dockerode的SDK從一個JavaScript的Web應用程序的客戶端腳本在我的電腦上發送命令到泊塢窗機。

我安裝泊塢CE的Windows(17.06.0-CE)和泊塢工具箱,我使用搬運工終端跑了容器的默認機器上。現在我想知道我輸入的命令是否可以使用NodeJS從Web應用程序發送。我嘗試使用此代碼:

import Docker from 'dockerode'; 

const docker = new Docker({host: 'myDefaultMachineHost'}); 

export function createLocalDb() { 

    docker.pull('someImageFromDockerHub', function (err, stream) { 
     if (err) console.log("Catch : " + err.toString()); 
      stream.pipe(process.stdout, {end: true}); 

     stream.on('end', function() { 
     //run the container 
     }).catch(function (err) { 
      console.log("Catch : " + err.toString()); 
     }); 
    }); 
} 

但這並不起作用(stream.pipe拋出錯誤)。我誤解了我應該使用dockerode的上下文嗎?

感謝您的解釋!

回答

0

總之:您需要將您的代碼更改爲此const docker = new Docker({socketPath: '/var/run/docker.sock'});並在您的容器中添加docker插座。

理論:

你有你的本地計算機內泊塢窗插座。你應該在Docker容器中添加這個套接字。 volume是您的解決方案。

圖像可視化這個問題:

enter image description here

實現與參數

這是Linux/Mac的用戶簡單的任務。他們可以做

docker run -v /var/run/docker.sock:/var/run/docker.sock ... 

在Windows上,你需要在這個question運行

docker run -v //var/run/docker.sock:/var/run/docker.sock ... 

更多細節。

實現與Dockerfile

此外,您還可以添加到您Dockerfile VOLUME指令。

在Linux/Mac上它應該是一行:

VOLUME /var/run/docker.sock /var/run/docker.sock 

我不知道它會在Windows誰,我使用的是Mac。