2016-05-25 18 views
1

Ich versuche, docker in meine CI-Plattform zu integrieren. Nachdem ich das mit einer Docker-in-a-docker Lösung richtig funktionierte, stieß ich auf einen Blogpost von einem der Docker Maintainer, wo er sagt, dass anstelle einer Docker-in-a-docker Lösung für meine CI, ich stattdessen einfach die /var/run/docker.sock in meinem CI-Container mounten sollte.CI & Docker-in-a-Docker

https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/

Einfach gesagt, wenn Sie Ihren CI Behälter (Jenkins oder andere) starten, anstatt etwas zusammen mit Docker-in-Docker Hacking, starten Sie es mit:

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

Also habe ich das versucht. Ich lief den folgenden Befehl ein:

docker run -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock jenkins

jenkins als mein CI Behälter verwenden.

Wenn Sie den obigen Befehl ausführen, startet Jenkins ordnungsgemäß, und ich kann in den Container springen, um zu sehen, dass sich die Datei docker.sock im Pfad /var/run/ befindet.

Allerdings, wenn ich den Befehl: docker, kehrt das Gerät mit der folgenden Meldung:

bash: docker: command not found

Weiß jemand, was ich um mich fehle diese Arbeit pro dem Autor Anweisungen zu machen?

Ich benutze Docker v. 1.11.1, auf einer frischen CentOS 7-Box.

Vielen Dank im Voraus

Antwort

0

Heute herausgefunden. Der obige Befehl funktioniert solange der docker Daemon + Abhängigkeiten zum Container hinzugefügt werden. In meinem Fall endete ich eine einfache Dockerfile Schreiben auf, die auch die Linie enthalten:

RUN curl -sSL https://get.docker.com/ | sh

Das installierte Docker auf dem Behälter, und als ich docker images aus dem Behälter lief, konnte ich all das sehen Bilder von meinem Host-Rechner. Ich bin jetzt in der Lage, alle docker Befehle aus dem Container zu verwenden.