# Jenkins pipeline fails with docker not found message

**URL:** <https://community.jenkins.io/t/jenkins-pipeline-fails-with-docker-not-found-message/3994>\
**Category:** Using Jenkins\
**Created:** [September 28, 2022, 1:06pm UTC](https://community.jenkins.io/t/jenkins-pipeline-fails-with-docker-not-found-message/3994 "2022-09-28T13:06:38Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![luke6Lh43](https://avatars.discourse-cdn.com/v4/letter/l/7feea3/32.png) [@luke6Lh43](https://community.jenkins.io/u/luke6Lh43)\
**Post date:** [September 28, 2022, 1:06pm UTC](https://community.jenkins.io/t/jenkins-pipeline-fails-with-docker-not-found-message/3994/1 "2022-09-28T13:06:38Z")

</div>

Hello Team,

I have installed Jenkins in Docker locally on my Mac using instruction from official documentation:

> **[Docker](https://www.jenkins.io/doc/book/installing/docker/)**
>
> Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software

All works well but pipeline fails during Build stage with following error message:

```auto
/var/jenkins_home/workspace/rst-security-jenkins-code_master@tmp/durable-8621d176/script.sh: line 1: docker: not found

script returned exit code 127

```

This is my Jenkinsfile:

```auto
pipeline {
  environment {
    registry = "mydockerhub/my-cicd-app"
    registryCredential = 'dockerhub'
    dockerImage = ''
  }
  agent { dockerfile true }
  // agent { 
  // docker { 
  // image 'python:alpine3.7'
  // args '-p 5000:5000'
  // } 
  // }
  stages {
    stage('Build') {
      steps {
        sh 'pip install -r requirements.txt'
        sh 'apk add libstdc++'
        sh 'python ./app.py &'
      }
    }
    stage('Test App') {
      steps {
        echo "${env.NODE_NAME}"
        sh 'pwd'
        sh 'uname -a'
        sh 'python test.py'
      }
      post {
        always {
          junit 'test-reports/*.xml'
        }
      } 
    }
    // Uncomment for SAST lab step 
    // Commented section starts
    /*
    stage('SAS Test') {
      steps {
        snykSecurity(
          snykInstallation: 'SnykV2Plugin',
          snykTokenId: 'snyktoken',
          severity: 'medium',
          failOnIssues: true)
      }
    }
    */
    // Commented section ends 
    stage('Build image') {
      steps{
        script {
          dockerImage = docker.build registry + ":$BUILD_NUMBER"
        }
      }
    }
    stage('Upload Image to Registry') {
      steps{
        script {
          docker.withRegistry( '', registryCredential ) {
            dockerImage.push()
          }
        }
      }
    }
    stage('Remove Unused docker image') {
      steps{
        sh "docker rmi $registry:$BUILD_NUMBER"
      }
    }
    // Uncomment for K8s app diployment step
    // Commented section starts
    /*
    stage('Deploy Application') {
      agent {
        kubernetes {
            cloud 'kubernetes'
          }
        }
        steps {
          container('kubectl') {
            sh """cat <<EOF | kubectl apply --validate=false -f -
apiVersion: v1
kind: Namespace
metadata:
  name: my-cicd-app
---
apiVersion: v1
kind: Service
metadata:
  name: my-service
  namespace: my-cicd-app
spec:
  selector:
    app: my-cicd-app
  ports:
    - protocol: TCP
      port: 5000
      targetPort: 5000
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-demo
  namespace: my-cicd-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-cicd-app
  template:
    metadata:
      labels:
        app: my-cicd-app
    spec:
      containers:
      - name: my-cicd-app
        image: $registry:$BUILD_NUMBER
        imagePullPolicy: Always
        ports:
        - containerPort: 5000
EOF"""
        }
      }
    }
   */ 
  // Commented section ends
  }
}

```

What could be the issue here? What’s more interesting that when I attach to jenkins (or dind) container and move into **/var/jenkins\_home/workspace/rst-security-jenkins-code\_master** directory, I am able to manually build image using **docker build** command…

Thanks for any comments!  
Luke

---

<div class="post-metadata">

**Author:** ![blankhang](https://dub1.discourse-cdn.com/flex013/user_avatar/community.jenkins.io/blankhang/32/4032_2.png) [@blankhang](https://community.jenkins.io/u/blankhang)\
**Post date:** [April 19, 2023, 7:34am UTC](https://community.jenkins.io/t/jenkins-pipeline-fails-with-docker-not-found-message/3994/2 "2023-04-19T07:34:37Z")

</div>

```sh
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/test
[Pipeline] {
[Pipeline] isUnix
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
+ docker inspect -f . node:7-alpine
/var/jenkins_home/workspace/test@tmp/durable-1e0eb9b6/script.sh: 1: docker: not found
[Pipeline] isUnix
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
+ docker pull node:7-alpine
/var/jenkins_home/workspace/test@tmp/durable-4b97b766/script.sh: 1: docker: not found
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127

```

```yml
version: '3.7'

services:
  jenkins:
    image: jenkins/jenkins:jdk11
    container_name: jenkins
    restart: always
    privileged: true
    user: root
    #user: 999:999
    healthcheck:
      test: curl -s https://localhost:8080 >/dev/null; if [[$$? == 52]]; then echo 0; else echo 1; fi
      interval: 1m
      timeout: 5s
      retries: 3
    ports:
      - '8080:8080'
    networks:
      - default
    volumes:
      - '/docker/jenkins/jenkins_home:/var/jenkins_home'
      - '/etc/localtime:/etc/localtime:ro'
      - '/var/run/docker.sock:/var/run/docker.sock'
      - '~/.m2:/root/.m2'

```

same error here

---

<div class="post-metadata">

**Author:** ![halkeye](https://dub1.discourse-cdn.com/flex013/user_avatar/community.jenkins.io/halkeye/32/8_2.png) [@halkeye](https://community.jenkins.io/u/halkeye)\
**Post date:** [April 19, 2023, 7:47am UTC](https://community.jenkins.io/t/jenkins-pipeline-fails-with-docker-not-found-message/3994/3 "2023-04-19T07:47:59Z")

</div>

Jenkins docker image does not include docket cli. It’s recommend you connect other agents (ssh, cloud, jnlp, etc) rather than using the controller directly.

If you want to use the controller you’ll need to extend the image and add the tools you need. There are docs on how to do it but I’m on.my phone atm

---

<div class="post-metadata">

**Author:** ![blankhang](https://dub1.discourse-cdn.com/flex013/user_avatar/community.jenkins.io/blankhang/32/4032_2.png) [@blankhang](https://community.jenkins.io/u/blankhang)\
**Post date:** [April 19, 2023, 8:11am UTC](https://community.jenkins.io/t/jenkins-pipeline-fails-with-docker-not-found-message/3994/4 "2023-04-19T08:11:09Z")

</div>

thanks for reply  
after did some research  
i find the way make it worked !  
[https://stackoverflow.com/questions/72990497/getting-glibc-2-32-and-glibc-2-34-not-found-in-jenkins-docker-with-dind-on](https://stackoverflow.com/questions/72990497/getting-glibc-2-32-and-glibc-2-34-not-found-in-jenkins-docker-with-dind-on)  
i changed my docker-compose file to

```yml
version: '3.9'

services:
  jenkins:
    build:
      dockerfile: Dockerfile
      context: .
    container_name: jenkins
    restart: always
    privileged: true
    user: root

    healthcheck:
      test: curl -s https://localhost:8080 >/dev/null; if [[$$? == 52]]; then echo 0; else echo 1; fi
      interval: 1m
      timeout: 5s
      retries: 3

    ports:
      - '8080:8080'
    networks:
      - default
    volumes:
      - '/app:/app'
      - '/usr/share/fonts:/usr/share/fonts'
      - '/docker/jenkins/jenkins_home:/var/jenkins_home'
      - '/etc/localtime:/etc/localtime:ro'
      - '/var/run/docker.sock:/var/run/docker.sock'
      - '~/.ssh:/var/jenkins_home/.ssh'
      - '~/.m2:/root/.m2'
networks:
  default:

```

and then Dockerfile

```shell
# https://github.com/jenkinsci/docker/blob/master/README.md
FROM jenkins/jenkins:lts
MAINTAINER blankhang@gmil.com

USER root

# install docker cli
RUN apt-get -y update; apt-get install -y sudo; apt-get install -y git wget
RUN echo "Jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
RUN wget http://get.docker.com/builds/Linux/x86_64/docker-latest.tgz
RUN tar -xvzf docker-latest.tgz
RUN mv docker/* /usr/bin/

# update system and install chinese language support and maven nodejs
RUN apt-get update && apt-get install -y locales locales-all maven nodejs \
    && sed -i '/^#.* zh_CN.UTF-8 /s/^#//' /etc/locale.gen \
    && locale-gen \
    && rm -rf /var/lib/apt/lists/* \

# Setting Default Chinese Language and UTC+8 timezone
#ENV LANG C.UTF-8
ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
ENV TZ Asia/Shanghai

USER Jenkins

```

after this

```shell
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/test
[Pipeline] {
[Pipeline] isUnix
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
+ docker inspect -f . node:7-alpine

Error: No such object: node:7-alpine
[Pipeline] isUnix
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
+ docker pull node:7-alpine
7-alpine: Pulling from library/node
90f4dba627d6: Pulling fs layer
1e674d353187: Pulling fs layer
d3a64c0f885a: Pulling fs layer
d3a64c0f885a: Verifying Checksum
d3a64c0f885a: Download complete
90f4dba627d6: Verifying Checksum
90f4dba627d6: Download complete
90f4dba627d6: Pull complete
1e674d353187: Verifying Checksum
1e674d353187: Download complete
1e674d353187: Pull complete
d3a64c0f885a: Pull complete
Digest: sha256:4954ce53247180e207772f936223b11d52a7e4ee712dfe73fe2a75e39f785067
Status: Downloaded newer image for node:7-alpine
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] withDockerContainer
Jenkins seems to be running inside container 9d84b70f7ec3d76685c852352aa3b8d4314c97f191e5414186c26026e43b3407
$ docker run -t -d -u 0:0 -w /var/jenkins_home/workspace/test --volumes-from 9d84b70f7ec3d76685c852352aa3b8d4314c97f191e5414186c26026e43b3407 -e ********-e******** -e ********-e******** -e ********-e******** -e ********-e******** -e ********-e******** -e ********-e******** -e ********-e******** -e ********-e******** -e ********-e******** -e ********-e******** -e ********-e******** -e ********-e******** -e ********-e******** node:7-alpine cat
$ docker top 86ff055eb44c7427563b6110f8f7414c6f40a951d937384b4edb9711bc453fa1 -eo pid,comm
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] sh
+ node --version
v7.10.1
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
$ docker stop --time=1 86ff055eb44c7427563b6110f8f7414c6f40a951d937384b4edb9711bc453fa1
$ docker rm -f --volumes 86ff055eb44c7427563b6110f8f7414c6f40a951d937384b4edb9711bc453fa1
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

```

---

<div class="post-metadata">

**Author:** ![nandiniachugatala](https://dub1.discourse-cdn.com/flex013/user_avatar/community.jenkins.io/nandiniachugatala/32/6789_2.png) [@nandiniachugatala](https://community.jenkins.io/u/nandiniachugatala)\
**Post date:** [January 21, 2024, 3:07pm UTC](https://community.jenkins.io/t/jenkins-pipeline-fails-with-docker-not-found-message/3994/5 "2024-01-21T15:07:07Z")

</div>

What if I instlled docker locally and I used this docker -compose file

version: “3.8”  
services:  
jenkins:  
container\_name: spreezy\_jenkins  
image: jenkins/jenkins:lts-jdk21  
privileged: true  
user: root  
ports:  
- 6833:8080  
- 50000:50000  
volumes:  
- $PWD/jenkins\_home:/var/jenkins\_home  
- /var/run/docker.sock:/var/run/docker.sock

```
restart: unless-stopped

```
