Docker: not found in Jenkins pipeline

This blog, which I wrote, has plenty of info on the problems with running Jenkins pipelines with Docker.

I recently founded a company called Nestybox that has created a container runtime (aka runc) that enables Docker to deploy containers that act like virtual hosts and can run system-level software such as Docker in them, without using privileged containers. It solves many of the issues described by Jerome in his docker-in-docker blog post (see Jerome’s comment above).

We have a solution that runs Jenkins + Docker inside the system container, avoids many of the problems listed in this thread, and does so in complete isolation from the Docker on the host. Check it out, hopefully it will help!

1 Like

Awesome stuff! This worked perfectly for me! I simply spun up a ubuntu 19.04 VM, and followed the Sysbox Installation Guide and @ctalledo’s blog post and was able to get Docker working in Jenkins pipelines (running in a dockerized Jenkins installation). More details here.

I meet same issue, it fixed mine. Thanks.

this worked for me too.

docker run -u 0 --privileged --name jenkins -it -d -p 8080:8080 -p 50000:50000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker \ -v /home/jenkins_home:/var/jenkins_home \ jenkins/jenkins:latest
1 Like

Although using “–privileged” flag while starting docker container docker run -u 0 --privileged --name jenkins ... may allow enabling docker in Jenkins pipeline, there are certain implications of starting docker in privileged mode

tanx more need this work for me …
خرید گیفت کارت

This solution worked for me. Thank you!

docker run -u 0 --privileged --name jenkins -d -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

worked for me.

docker run -d -u root -v /var/jenkins_home:/var/jenkins_home -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -p 8081:8080 -p 5001:5000 --name jenkins-docker --privileged jenkins/jenkins:lts 

none of these are working for me :confused:
I’ve tried -u root and --group-add 0, --privileged too. $(which docker) is not working inside the docker command buts works separately so I’ve replaced $(which docker) with the $(which docker) literal which is something like C:/Program Files/..../bin/docker.
I’ve also tried docker on docker but not working.
I’d be happy if I’ve got a separate error. But Jenkins is giving me

/usr/bin/docker: 5: /usr/bin/docker: Cannot fork 

because it cannot identify docker after all this. help :frowning:

but how to resolve this at host level,as my jenkins pod running in kubernetes and facing the same issue,if any body can help me with the deployment.yaml file

apiVersion: apps/v1 kind: Deployment metadata: name: jenkins-app labels: app: jenkins-app spec: replicas: 1 selector: matchLabels: app: jenkins-app template: metadata: labels: app: jenkins-app spec: securityContext: runAsUser: 1000 runAsGroup: 3000 fsGroup: 1234 containers: - name: jenkins-app image: jenkins/jenkins:latest imagePullPolicy: Always ports: - name: http-port containerPort: 8080 - name: jnlp-port containerPort: 50000 volumeMounts: - name: jenkins-home mountPath: /var subPath: jenkins_home - name: docker-sock mountPath: /var/run/docker.sock securityContext: allowPrivilegeEscalation: false volumes: - name: jenkins-home persistentVolumeClaim: claimName: jenkins-pv-claim - name: docker-sock hostPath: path: /var/run/docker.sock dnsPolicy: ClusterFirst --- apiVersion: v1 kind: Service metadata: name: jenkins-app-service labels: app: jenkins-app-service spec: selector: app: jenkins-app type: LoadBalancer ports: - port: 8080 protocol: TCP targetPort: 8080 nodePort: 30003 --- apiVersion: v1 kind: Service metadata: name: jenkins-jnlp-service labels: app: jenkins-jnlp-service spec: selector: app: jenkins-app type: ClusterIP ports: - port: 50000 protocol: TCP targetPort: 50000 --- apiVersion: v1 kind: PersistentVolume metadata: name: jenkins-pv-volume annotations: pv.beta.kubernetes.io/gid: "1234" labels: type: local spec: storageClassName: manual capacity: storage: 6Gi accessModes: - ReadWriteOnce hostPath: path: "/var/jenkins_home" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: jenkins-pv-claim spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 3Gi 

it works for me, thank you so much

This is the answer in case you struggle with the same issue.
docker run
-u root
–rm
-d
-p 8080:8080
-p 50000:50000
–name myjenkin
-v $(which docker):/usr/bin/docker
-v jenkins-data:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
jenkins/jenkins

Hmm, this results in “missing GLIBC” error in Jenkins.

sh “ssh -o StrictHostKeyChecking=no ubuntu@172.31.2.57 docker run -d -p 8080:8080 --name cloudcandy SXSSXX/javawebapp:${buildNumber}”

I have error in comand not found

this is not working for me either, can you pls help me

I got this error
ocker: Error response from daemon: error while creating mount source path ‘/usr/bin/docker’: mkdir /usr/bin/docker: read-only file system.
ERRO[0095] error waiting for container:

This is the answer incase anyone is stuck (make sure you run this on root):

docker run --name jenkins_ci_container -u root -d -v jenkins_home:/var/jenkins_home -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -p 80:8080 -p 50000:50000 --restart=on-failure jenkins/jenkins:lts-jdk17; 

use mine… this will not using root user, you still use jenkins user and docker groups for using docker command

docker run --name jenkins -d -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v /var/jenkins_home:/var/jenkins_home -u 1000:$(getent group docker | cut -d':' -f3) --restart unless-stopped jenkins/jenkins:lts 

Thank you so much!!!

This topic was automatically closed after 13 days. New replies are no longer allowed.