Webux Lab

By Studio Webux

Jenkins Docker in Docker

TG
Tommy Gingras Studio Webux 2024-04-06

Build a custom jenkins image to run docker commands within

Dockerfie

FROM jenkins/jenkins:lts-jdk17

USER root

#
# Install Docker
#
# Add Docker's official GPG key:
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        ca-certificates curl
RUN install -m 0755 -d /etc/apt/keyrings && \
    curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \
    chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
RUN echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        docker-ce \
        docker-ce-cli \
        containerd.io \
        docker-buildx-plugin \
        docker-compose-plugin && \
    rm -rf /var/lib/apt/lists/*
#
# Set user group
#
RUN usermod -aG docker jenkins
# This 979 id is on my rocky linux, usually the group id is 999
RUN groupmod -g 979 docker && usermod -aG 979 jenkins


#
# Install anything else needed
#

# ...


USER jenkins

Build and Run

docker build . -t jenkins-dind
docker run \
  --name jenkins
  -p 8080:8080 \
  --detach \
  --restart always \
  -v $(pwd)/jenkins_home:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkins-dind

Docker compose

services:
  jenkins:
    build:
      context: .
    container_name: jenkins
    restart: unless-stopped
    ports:
      - '8080:8080'
    volumes:
      - jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock

  ssh-agent:
    image: jenkins/ssh-agent
    container_name: jenkins-ssh-agent
    restart: unless-stopped

volumes:
  jenkins_home:
docker compose up -d

Access http://localhost:8080, You can setup jenkins as usual and install the plugins you need.


Search