2017-03-22 10 views
7

Ich habe jenkins im Container laufen und Projekt-Quellcode auf github.Wie mounted docker volume mit jenkins docker container?

Ich muss Projekt in Container auf dem gleichen Host wie Jenkins ausführen, aber nicht als Docker-in-Docker, ich möchte sie als Geschwistercontainer ausführen.

Meine Pipeline sieht wie folgt aus:

  1. die Quelle von Github ziehen
  2. das Projekt Bild bauen
  3. dem Projekt Container laufen

, was ich jetzt tun die Docker verwendet Socket des Hosts von jenkins container:

/var/run/docker.sock:/var/run/docker.sock 

Ich habe Problem, wenn jenkins Behälter das Volumen mit Quellcode Halterung aus dem Verzeichnis/var/jenkins_home/Arbeitsbereich/branch_name Behälter zu projizieren:

volumes: 
- ./servers/identity/app:/srv/app 

ich bin immer leere Ordner "/ srv/app" im Projektbehälter

Meine beste Vermutung ist, dass Docker versucht, es vom Host und nicht vom Jenkins-Container zu mounten.

Die Frage ist also: Wie kann ich den Container explizit festlegen, von dem ich das Volume mounte?

+0

Haben Sie dieses Problem gelöst? Ich stoße auf etwas Ähnliches. –

Antwort

1

Versuch:

docker run -d --volumes-from <ContainerID> <YourImage> 

wo Container-ID ID des Behälters ist, dass Sie aus für mont Daten wollen.

docker volume create <volname> 

und weisen es den beiden Behältern

volumes: 
- <volname>:/srv/app 
1

Gemeinsame Nutzung der Socke zwischen dem Host und Jenkins war mein Problem, weil "/ var/jenkins_home":

Sie können auch Volumen, durch erstellen ist höchstwahrscheinlich ein Volumen für den Jenkins-Behälter.

Meine Lösung war Docker in einem Systemd Container zu installieren, ohne die Socke zu teilen.

docker run -d --name jenkins \ 
    --restart=unless-stopped \ 
    --privileged \ 
    -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ 
    -v jenkins-vol:/var/lib/jenkins \ 
    --tmpfs /run \ 
    --tmpfs /run/lock \ 
    ubuntu:16.04 /sbin/init 

Dann installieren Sie Jenkins, Docker und Docker Verfassen Sie es.

Verwandte Themen