Skip to content

Jenkins Docker Container mit Docker erweitern

Zuerst erstellen wir uns ein Dockerfile, wo wir das gewünschte Jenkins Container Image (jenkins/jenkins:2.332.3-lts-jdk11) benutzern.

jenkns:~$ vi Dockerfile

Inhalt des Dockerfile

FROM jenkins/jenkins:2.332.3-lts-jdk11

ARG DEBIAN_FRONTEND=noninteractive

USER root

RUN apt update -y \
    && apt install -y ca-certificates gnupg lsb-release \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

RUN groupadd -g 998 docker
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
RUN echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
RUN apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
RUN usermod -a -G docker jenkins

USER jenkins

Dann bauen wir daraus unser eigenes Jenkins Image und nennen es jenkins-docker.

jenkins:~$ docker build . -t jenkins-docker

Nachdem das Docker Image erfolgreich gebaut wurde, erstellen wir uns folgendes docker-compose.yml

jenkins:~$ vi docker-compose.yml

Inhalt der docker-compose.yml

version: '3.3'
services:
  jenkins:
    container_name: jenkins-docker
    image: jenkins-docker:latest
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./jenkins_home:/var/jenkins_home
    restart: always

Dann erstellen wir uns noch das JENKINS_HOME Verzeichnis als Volume.

jenkins:~$ mkdir -p jenkins_home

Uns zum Schluss starten wir unseren Container.

jenkins:~$ docker-compose up -d