Zoeken…


Jenkins CI Container met behulp van Docker

In dit hoofdstuk wordt beschreven hoe u een Docker-container met Jenkins erin instelt, waarmee Docker-opdrachten naar de Docker-installatie (de Docker Daemon) van de host kunnen worden verzonden. Docker effectief gebruiken in Docker. Om dit te bereiken, moeten we een aangepaste Docker-afbeelding maken die is gebaseerd op een willekeurige versie van de officiële Jenkins Docker-afbeelding. Het Dockerbestand (de instructie om de afbeelding te maken) ziet er zo uit:

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

Dit Dockerbestand maakt een afbeelding met de Docker-clientbinaire bestanden die door deze client worden gebruikt om te communiceren met een Docker Daemon. In dit geval de Docker Daemon van de gastheer. De RUN instructie in dit bestand maakt ook een UNIX-gebruikersgroep met de UID 999 en voegt de gebruiker Jenkins eraan toe. Waarom dit precies nodig is, wordt in het volgende hoofdstuk beschreven. Met deze afbeelding kunnen we een Jenkins-server uitvoeren die Docker-opdrachten kan gebruiken, maar als we deze afbeelding alleen uitvoeren, kan de Docker-client die we in de afbeelding hebben geïnstalleerd niet communiceren met de Docker Daemon van de host. Deze twee componenten communiceren wel via een UNIX Socket /var/run/docker.sock . Op Unix is dit een bestand zoals al het andere, dus we kunnen het eenvoudig in de Jenkins Container mounten. Dit wordt gedaan met de opdracht docker run -v /var/run/docker.sock:/var/run/docker.sock --name jenkins MY_CUSTOM_IMAGE_NAME . Maar dit aangekoppelde bestand is eigendom van docker:root en daarom maakt de Dockerfile deze groep met een bekende UID en voegt de Jenkins-gebruiker eraan toe. Nu is de Jenkins Container echt in staat Docker te gebruiken en te gebruiken. In productie moet het run commando ook -v jenkins_home:/var/jenkins_home bevatten -v jenkins_home:/var/jenkins_home om een back-up te maken van de Jenkins_home map en natuurlijk een port-mapping om toegang te krijgen tot de server via het netwerk.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow