2017-07-15 15 views
5

Chcę uruchomić Jenkinsa w kontenerze Docker. Wszystko w porządku. Mogę go uruchomić tak: docker run -d --name jenkins -t -i -p 49001:8080 jenkins Mogę również dodać trwałe miejsce. Problem pojawił się, gdy utworzyłem potok rurociągu, który musi wykonać komendy docker (build i push). Po pierwsze błąd polegał na tym, że okno dokowane nie było zainstalowane w systemie. Tak, oczekiwano. Następnie rozpocząłem wyszukiwanie i dowiedziałem się, jak uruchomić docker w kontenerze (przechodząc 2 trwałe woluminy): docker run ... -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -p 49001:8080 jenkinsJenkins w kontenerze Docker (uruchom proces dokowania)

To działa, ale z pewnymi wyjątkami. W kontenerze znajduje się polecenie docker, ale gdy próbuję go uruchomić, zgłasza wyjątek: docker: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory

Jak mogę rozwiązać ten problem? Jaki jest poprawny sposób instalacji Jenkinsa w Dockerze i uruchomienia w nim Dockera? Myślę, że są 2 sposoby:

  1. Ten, który robię - używać gniazd
  2. mogę wystawiać API Döcker który umożliwia połączenia i polecenia uruchomione

Faktycznie warto uruchomiony Jenkins w Docker? Próbowałem zainstalować brakującą bibliotekę ręcznie od apt-get Działa, ale wiem, że to nie jest poprawna metoda.

+0

Czy https://www.vip-consult.solutions/post/easy-docker-swarm-jenkins-continuous-deployment-at-scale#content pomóc? – VonC

Odpowiedz

6

Musisz zainstalować libltdl-dev, aby wszystko działało poprawnie. Tworzenie Dockerfile, który wygląda tak:

FROM jenkins:latest 

USER root 
RUN apt-get update \ 
     && apt-get upgrade -y \ 
     && apt-get install -y sudo libltdl-dev \ 
     && rm -rf /var/lib/apt/lists/* 
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers 

USER jenkins 
# Here you can install some Jenkins plugins if you want 
+0

Utworzono prosty obraz obejścia problemu https://hub.docker.com/r/jesusperales/jenkins-docker-run-inside/ –