Wie zu montieren Andockfenster Volumen mit jenkins docker-container?
Habe ich jenkins läuft in container-und Projekt-source-code auf github.
Muss ich laufen Projekt in container auf dem gleichen host wie jenkins, aber nicht als Andockfenster-in-docker, ich möchte Sie als Geschwister-Container.
Meine pipeline sieht wie folgt aus:
- ziehen Sie die source von github
- das Projekt erstellen Bild
- führen Sie das Projekt, container
Was ich jetzt mit dem Andockfenster-Buchse des host von jenkins container:
/var/run/docker.sock:/var/run/docker.sock
Problem habe ich, wenn jenkins container mounten Sie das Laufwerk mit der Quell-code von /var/jenkins_home/workspace/BRANCH_NAME zu Projekt-container:
volumes:
- ./servers/identity/app:/srv/app
ich bin immer leeren Ordner "/srv/app" im Projekt-container
Meine beste Vermutung ist, dass docker versucht zu mounten von host-und nicht von den jenkins-container.
Die Frage ist also: wie kann ich explizit den Behälter, aus dem ich das volume bereitstellen?
- Hast du am Ende die Lösung dieses Problem? Läuft bei mir in etwas ähnlicher.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe das gleiche Problem bei der Verwendung von Jenkins docker-container laufen einen anderen Behälter.
Senario 1 - Läuft-container in Jenkins docker-container
Dies ist nicht eine empfohlene Weg, Erklärungen es hier geht. Wenn Sie noch brauchen, um diesen Ansatz verwenden, dann ist dieses problem ist nicht ein problem.
Senario 2 - Laufen docker-client innerhalb Jenkins-container
Nehme an, wir laufen müssen, einen anderen container (ContainerA) innerhalb Jenkins docker-container Andockfenster pipeline plugin verwenden
--volumes-from
zu montieren Jenkins Behältervolumen zu ContainerA.Wenn Sie versuchen, zu verwenden
--volume
oder-v
auf map-spezifisches Verzeichnis in Jenkins container zu ContainerA, Sie haben ein unerwartetes Verhalten.Weil
--volumes
oder-v
würde versuchen, anzeigen Verzeichnisse in host zu ContainerA, anstatt die Zuordnung von Verzeichnissen innerhalb Jenkins container. Wenn die Verzeichnisse nicht gefunden in host, dann erhalten Sie ein leeres Verzeichnis innerhalb ContainerA.Kurz gesagt, können wir keine Zuordnung von einem bestimmten Verzeichnis aus containerA zu containerB, konnten wir nur montieren Sie die ganzen Bände von containerA zu containerB, und volume-alias wird nicht unterstützt.
Lösung
versuchen:
wo die container-ID ist die id des Containers, den Sie wollen für mont-Daten aus.
Können Sie auch erstellen Sie Volumen, von:
und weisen Sie Sie den beiden Containern
Teilen die Socke zwischen dem Host und Jenkins war mein problem, da "/var/jenkins_home" ist wahrscheinlich ein Volumen für das Jenkins-container.
Meine Lösung war die Installation von docker innerhalb eines systemd-container, ohne die Socke.
Dann installieren, Jenkins, Docker und Docker Compose it.