2017-03-22 71 views
7

Mam jenkins uruchomiony wewnątrz kontenera i kodu źródłowego projektu na github.Jak zamontować objętość dokera przy użyciu kontenera dokowanego Jenkins?

Potrzebuję uruchomić projekt w kontenerze na tym samym hoście co jenkins, ale nie jako docker-w-docker, chcę uruchomić je jako kontenery rodzeństwa.

Moja rurociąg wygląda następująco:

  1. ciągnąć źródło, z github
  2. budowanie wizerunku projektu
  3. uruchomić pojemnik projektowemu

co robię teraz używa docker gniazdo hosta z pojemnika Jenkins:

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

Mam problem, gdy Jenkins pojemnik zamontować wolumin z kodem źródłowym z/var/jenkins_home/roboczy/BRANCH_NAME do projektu opakowania:

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

Dostaję pusty folder "/ srv/app" w pojemniku projektu

Moje najlepsze przypuszczenie jest takie, że docker próbuje zamontować go z hosta, a nie z pojemnika Jenkins.

Pytanie brzmi: jak mogę jawnie ustawić kontener, z którego mogę zamontować wolumin?

+0

Czy udało Ci się rozwiązać ten problem? Występuję w coś podobnego. –

Odpowiedz

1

try:

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

gdzie ID pojemnik jest id kontenera chcesz dla danych z mont.

Można również utworzyć wolumin, przez:

docker volume create <volname> 

i przypisać ją do obu pojemników

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

dzieląc skarpetkę pomiędzy hostem a Jenkins był mój problem, ponieważ "/ var/jenkins_home" jest najprawdopodobniej wielkością dla kontenera Jenkinsa.

Moje rozwiązanie polegało na instalowaniu okna dokowanego wewnątrz kontenera systemd bez udostępniania skarpety.

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 

Następnie zainstaluj Jenkins, Docker i Docker Compose.