2017-08-15 1 views
0

Ich bin neu bei Docker und ich habe einige Schwierigkeiten zu verstehen, wie ich es verwenden sollte.Verwenden Sie einen Docker Sdk, um Befehle an den Docker-Rechner von einer Web-App senden

Momentan frage ich mich, ob es Sinn macht, Befehle von einem Skript auf der Client-Seite einer Javascript-Webanwendung mit einem SDK wie Dockerode an einen Docker-Computer auf meinem Computer zu senden.

Ich habe Docker CE für Windows (17.06.0-CE) und Docker Toolbox installiert, und ich habe einen Container auf dem Standardcomputer mit dem Andockterminal ausgeführt. Jetzt frage ich mich, ob die Befehle, die ich eingegeben habe, von einer Web-App mit NodeJS gesendet werden könnten. Ich habe versucht, mit diesem Code:

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()); 
     }); 
    }); 
} 

Aber das funktioniert nicht (stream.pipe wirft einen Fehler). Missverstehe ich den Kontext, in dem ich Dockerode verwenden soll?

Danke für Ihre Erklärungen!

Antwort

0

In Kürze: Sie müssen Ihren Code zu diesem const docker = new Docker({socketPath: '/var/run/docker.sock'}); ändern und Docker-Buchse in Ihrem Container hinzufügen.

Theorie:

Sie haben Docker Steckdose in Ihrem lokalen Rechner. Sie sollten diesen Socket in Ihrem Andock-Container hinzufügen. Die volume ist Ihre Lösung.

Bild zur Visualisierung dieser Ausgabe:

enter image description here

Umsetzung mit Argumenten

Dies ist einfache Aufgabe für Linux/Mac-Benutzer. Sie können tun

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

Unter Windows benötigen Sie

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

Mehr Details in diesem question laufen.

Umsetzung mit Dockerfile

Auch können Sie Ihre Dockerfile VOLUME Anweisung hinzuzufügen.

Unter Linux/Mac sollte es Zeile wie folgt sein:

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

Ich weiß nicht, wer es unter Windows sein wird, verwende ich Mac.

Verwandte Themen