Welcome to the Linux Foundation Forum!

Getting "docker: not found" when trying to build in Lab6

I've confirmed that bothe docker services are running (docker:dind, and jenkins). I also made sure that both plugins are installed (Docker pipeline and Docker plugin). but everytime it runs it failed to build, and I get:

/var/jenkins_home/workspace/docker-pipe-01@tmp/durable-5067c421/script.sh.copy: 1: docker: not found
or
/var/jenkins_home/workspace/_worker-pipe_feature_dockerbuild@tmp/durable-d8576d0c/script.sh.copy: 1: docker: not found

depending on what part of the lab I try

Welcome!

It looks like you're new here. Sign in or register to get started.
Sign In

Comments

  • Posts: 42

    I'm getting a similar error for lab6:

    WorkflowScript: 3: Invalid agent type "docker" specified. Must be one of [any, label, none] @ line 3, column 9.
    docker {
    ^

    1 error

    I have installed both the Docker and Docker-Pipeline plugins.

  • Posts: 42

    I just got it to build. I had to restart Jenkins after installing the Docker and Docker-Pipeline plugins.

  • Hi @jcasanas,

    It seems that error is associated to both plugins, Docker and Docker-Pipeline. So, when one of them is missing, or Jenkins isn't recognizing or finding it, it will give that error. So, try restarting Jenkins (as @zacts did) and check again.

    Regards,
    Luis.

  • I've restarted jenkins and I've restarted the docker containers and I still get the same

  • Posts: 42

    I manually restarted jenkins, not via docker. https://stackoverflow.com/questions/8072700/how-to-restart-jenkins-manually. @jcasanas I don't know if this might help. I did http://localhost:8080/safeRestart.

  • Hi @jcasanas and @zacts,

    Yes, it can be restarted from a URL and also from the command line. So, the command that @zacts mentioned will wait until all the jobs are finished, and then it will restart:

    http://localhost:8080/safeRestart

    If that doesn't work, you can try this one:

    http://localhost:8080/restart

    Regards,
    Luis.

  • that's exactly what I did first,the manual jenkins restart using both saferestart and restart and after that failed then I restarted the docker containers too

  • I've now done the following:

    • uninstalled all docker plug-ins in jenkins
    • restarted jenkins via http://<host>/restart
    • installed docker plugin and restarted jenkins
    • installed docker pipeline and restarted jenkins
    • ran the build manually and I'm still getting the same error
    1. + docker inspect -f . maven:3.9.8-sapmachine-21
    2. /var/jenkins_home/workspace/_worker-pipe_feature_dockerbuild@tmp/durable-21303b26/script.sh.copy: 1: docker: not found
    • I've checked the docker-compose.yml file and everything looks correct
    • I did a docker compose down
    • changed DOCKER_HOST environment for the jenkins service from tcp://docker:2376 to tcp://localhost:2376
    • brought back up the stack
    • uninstalled all the docker plug-ins
    • re-installed docker plug-ins
    • ran build and got the same error
    • brought back down the stack
    • changed docker host env for jenkins service to tcp://0.0.0.0:2376
    • brought back up the stack
    • ran build and it failed
    • un-installed and re-installed the docker plug-ins and restarted jenkins
    • ran the build and it still fails
    • I shelled into the jenkins container with root and installed netcat
    • ran nc -vc <dind ip> 2376 and succeeded showing that the post is open
    • I was also able to ping and resolve the docker network ip for the dnd container

    @luisviveropena any other Ideas you might have for me, I've ran out of ideas and I was able to confirm that the jenkins container is able to talk to the dind container over the docker port 2376

  • Hi @jcasanas, what Jenkins version are you running?
    I'll recreate the environment and do the test.

    Regards,
    Luis.

  • Jenkins 2.463

  • @luisviveropena have you been able to recreate the environment. also to make sure that the dind container has docker running apropriatly I shelled into it and ran docker run hello-world. It ran without a problem

  • SOLVED

    I figured out what it was, It was the docker-compose.yml file and how it built the Jenkins service. I relooked at the compose file and noticed that it has it to build the Jenkins service both with a Dockerfile and using an image... see below

    1. services:
    2. jenkins:
    3. image: jenkins/jenkins:2.463-jdk17
    4. build:
    5. context: .
    6. dockerfile: Dockerfile
    7. ports:
    8. - 8080:8080
    9. - 50000:50000
    10. environment:
    11. - DOCKER_HOST=tcp://docker:2376
    12. - DOCKER_CERT_PATH=/certs/client
    13. - DOCKER_TLS_VERIFY=1
    14. networks:
    15. - lfs261
    16. hostname: jenkins
    17. privileged: true
    18. restart: always
    19. volumes:
    20. - jenkins-data:/var/jenkins_home
    21. - jenkins-docker-certs:/certs/client:ro
    22. depends_on:
    23. - docker

    so I brought it back down and commented out image: jenkins/jenkins:2.463-jdk17 from the compose file and brought the services back up. I forced a build both for the lab and for the docker-pipe-01 project and they now both ran without a problem. I looks like because the service had both to be build from an image and a Dockerfile it got confused, so now it's only building from the Dockerfile and all looks good now.

  • Hi @jcasanas,

    I'm glad you found the issue and a workaround! I'm building the infrastructure from some labs before, so it will take me some time.

    Regards,
    Luis.

  • @jcasanas said:
    SOLVED

    I figured out what it was, ...

    This worked for me as well. Thanks @jcasanas

    It would be nice to have this corrected in the devops/setup/docker-compoe.yaml file. If in fact this affects everyone trying lab6

  • Posts: 1,264

    Hi all,

    I just finished doing the test case and it didn't fail for me!! The container ran in the Docker DIND host -it took some seconds to run- and Jenkins reported it finished without issues.

    I can suggest the following steps:

    1.- Be extra sure the Jenkins file syntax is OK. Don't miss any brackets and use spaces instead tabs.

    2.- Be sure you are working in the right branch (feature/dockerbuild).

    3.- Be sure that your modifications in the Jenkinsfile gets to Github. You should see a success end like this:

    git push origin feature/dockerbuild
    Enumerating objects: 7, done.
    Counting objects: 100% (7/7), done.
    Delta compression using up to 12 threads
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (4/4), 398 bytes | 398.00 KiB/s, done.
    Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
    remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
    To https://github.com/devopsn3rd/LFS261-example-voting-app.git
    d454eb8..da2c2d4 feature/dockerbuild -> feature/dockerbuild

    4.- For the validation:

    You should have obtained the ‬‭'devops-repo/' directory in Lab 4, so go to 'devops-repo/setup/' and run 'docker compose exec docker sh' and 'watch docker ps' inside the container before you run the 'git push' command, or you could miss watching how the container run, because it will run for just few seconds (I had to make a second modification in the Jenkins file and push it just to have enough time to get into the container and run the 'watch docker ps' command).

    If any of you is having any issues with this lab yet, and has access to Office Hours (through the Cloud Engineer IT Professional Program), you can join Office Hours for LFS261 and I can take a look at this.

    Regards,
    Luis.

Welcome!

It looks like you're new here. Sign in or register to get started.
Sign In

Welcome!

It looks like you're new here. Sign in or register to get started.
Sign In

Categories

Upcoming Training