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.