I want to run Jenkins in Docker container. Everything is OK. I can run it like this: docker run -d --name jenkins -t -i -p 49001:8080 jenkins
I can also add persistent storage. The problem came when I created a pipeline can has to execute docker
commands (build
and push
). First the error was that docker wasn't installed on the system. Yes, expected. Then I started searching and found out how I can run docker in container (passing 2 persistent volumes): docker run ... -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -p 49001:8080 jenkins
This runs, but with some exceptions. There is docker
command in the container but when I try to run it, it throws an exception: docker: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory
How can I fix this problem? What is the correct way for installing Jenkins in Docker and run Docker in it? I think there are 2 ways:
Actually is it worth running Jenkins in Docker? I tried to install the missing lib manually from the apt-get
It works but I know that it's not the correct way..
Just use a pre-configured Docker container and your Jenkins builds get access to all of those resources, without the headache of managing and maintaining all of that peripheral software.
To run docker inside docker, all you have to do it just run docker with the default Unix socket docker. sock as a volume. Just a word of caution: If your container gets access to docker. sock , it means it has more privileges over your docker daemon.
Docker plugin for Jenkins The aim of this docker plugin is to be able to use a Docker host to dynamically provision a docker container as a Jenkins agent node, let that run a single build, then tear-down that node, without the build process (or Jenkins job definition) requiring any awareness of docker.
You have to install libltdl-dev
in order to get everything working correctly. Create a Dockerfile
that looks like this:
FROM jenkins:latest
USER root
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y sudo libltdl-dev \
&& rm -rf /var/lib/apt/lists/*
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
USER jenkins
# Here you can install some Jenkins plugins if you want
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With