Szukaj…


Kontener Jenkins CI przy użyciu Dockera

W tym rozdziale opisano, jak skonfigurować kontener Docker z Jenkinsem w środku, który może wysyłać polecenia Docker do instalacji Docker (demon Docker) hosta. Skutecznie używając Dockera w Dockerze. Aby to osiągnąć, musimy zbudować niestandardowy obraz Docker oparty na dowolnej wersji oficjalnego obrazu Docker Jenkins. Plik Docker (Instrukcja budowania obrazu) wygląda następująco:

FROM jenkins

USER root

RUN cd /usr/local/bin && \
curl https://master.dockerproject.org/linux/amd64/docker > docker  && \
chmod +x docker  && \
groupadd -g 999 docker && \
usermod -a -G docker jenkins
    
USER Jenkins

Ten plik Docker tworzy obraz, który zawiera pliki binarne klienta Docker, którego klient używa do komunikacji z demonem Docker. W takim przypadku demon dokujący hosta. Instrukcja RUN w tym pliku tworzy również grupę użytkowników UNIX z UID 999 i dodaje do niej użytkownika Jenkinsa. Dlaczego dokładnie to jest konieczne, opisano w dalszym rozdziale. Za pomocą tego obrazu możemy uruchomić serwer Jenkins, który może używać poleceń Docker, ale jeśli po prostu uruchomimy ten obraz, klient Docker zainstalowany w obrazie nie będzie mógł komunikować się z demonem Docker hosta. Te dwa komponenty komunikują się za pośrednictwem UNIX Socket /var/run/docker.sock . W systemie Unix jest to plik jak wszystko inne, więc możemy go łatwo zamontować w pojemniku Jenkins. Odbywa się to za pomocą okna docker run -v /var/run/docker.sock:/var/run/docker.sock --name jenkins MY_CUSTOM_IMAGE_NAME komendy docker run -v /var/run/docker.sock:/var/run/docker.sock --name jenkins MY_CUSTOM_IMAGE_NAME . Ale ten zamontowany plik jest własnością docker:root i dlatego Dockerfile tworzy tę grupę ze znanym UID i dodaje do niej użytkownika Jenkins. Teraz kontener Jenkins naprawdę może działać i używać Dockera. W produkcji polecenie uruchomienia powinno również zawierać -v jenkins_home:/var/jenkins_home aby wykonać kopię zapasową katalogu Jenkins_home i oczywiście mapowanie portów, aby uzyskać dostęp do serwera przez sieć.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow