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:
- The one that I am doing - use the sockets
- I can expose the docker api that allows connections and running commands
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..
You have to install
libltdl-dev
in order to get everything working correctly. Create aDockerfile
that looks like this: