DEV Community 👩‍💻👨‍💻

Kshitij (kd)
Kshitij (kd)

Posted on • Updated on

Run Docker commands inside Jenkins Docker container


If you want to initiate docker containers from within your jenkin containers,this is what you have to do:

  • In the Jenkins Dockerfile, add commands to get docker, docker-compose installed.
  • bind mount the docker socket.

And thats it! This is how the Dockerfile looks like:

Jenkins Dockerfile

FROM jenkins/jenkins

# Docker install
USER root
RUN apt-get update && apt-get install -y \
       apt-transport-https \
       ca-certificates \
       curl \
       gnupg2 \
       software-properties-common \

RUN curl -fsSL | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository \
       "deb [arch=amd64] \
       $(lsb_release -cs) \

RUN curl -L`uname -s`-`uname -m` -o /usr/local/bin/docker-compose \
&& chmod +x /usr/local/bin/docker-compose

RUN apt-get update && apt-get install -y docker-ce-cli

USER jenkins

Enter fullscreen mode Exit fullscreen mode

Now to build the image:

docker build -t jenkins-docker .
Enter fullscreen mode Exit fullscreen mode

To run the docker-image, including the volume mounts:

 docker run -d --group-add $(stat -c '%g' /var/run/docker.sock) \
-v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 -p 50000:50000 \
-v `pwd`/jenkins:/var/jenkins_home --log-opt max-size=50k   --log-opt max-file=5   --name jenkins -P jenkins-docker
Enter fullscreen mode Exit fullscreen mode

Here you can see docker.sock file has been mounted.Also, jenkins_home folder has been mounted so that you can persist the information regarding your pipeline/configuration/users etc.
Dont forget to take backup of jenkins_home directory!

I have uploaded a makefile and a similar Dockerfile on github.

And thats it!

Top comments (1)

theunreal profile image
Eliran Elnasi

This is awesome! Do you have a CentOS version?

🌱 DEV runs on 100% open source code that we started called Forem.

You can contribute to the codebase or host your own.