Hi all—

I'm trying to run steps inside a docker container via *.inside*, but the 
container is killed shortly after running the commands. It appears that the 
docker-workflow plugin is not waiting for the *exec* command behind the 
scenes, and is stopping the container prematurely.

A little context, first:

   - Jenkins slave is running on a CentOS Linux release 7.1.1503 VM.
   - Using the official *debian:7* docker image.
   - Docker version 1.9.1, build a34a1d5
   - Jenkins 1.639
   - *This might be unrelated, but it's probably worth mentioning:*
      - The default CentOS Docker install was running the daemon like 
*/usr/bin/docker 
      daemon -H fd://*
      - I wasn't able to get the docker-workflow plugin to connect to the 
      daemon with that configuration, so I modified the service file to instead 
      run as */usr/bin/docker daemon -H tcp://localhost:2375*
      - I could then successfully use the plugin by running inside a 
*docker.withServer('tcp://localhost:2375', 
      '') { ... }* block.
   

Reproducing the issue

Anything running in an *sh* block that finishes very quickly is fine:

*node('docker') {*
*    docker.withServer('tcp://localhost:2375', '') {*
*        docker.image('debian:7').inside {*
*            sh 'printenv'*
*        }*
*    }*
*}*


However, a longer-running command will always fail (Jenkins build fails, 
complaining that the script exited with error code -1):

*node('docker') {*
*    docker.withServer('tcp://localhost:2375', '') {*
*        docker.image('debian:7').inside {*
*            sh 'sleep 300'*
*        }*
*    }*
*}*


Here are some interesting lines from */var/log/messages*:

*Jan 11 15:25:24 jenkins-build-centos7 docker: 
time="2016-01-11T15:25:24.290960195-05:00" level=info msg="POST 
/v1.21/containers/02b6dbc8af81794efe1aeeb43f861e47a803bb3672a9991a63120632127df247/exec"*
*Jan 11 15:25:24 jenkins-build-centos7 docker: 
time="2016-01-11T15:25:24.293203526-05:00" level=info msg="POST 
/v1.21/exec/39fd717f8dd9797e9a967edc995e0f0e29ed19bcd1837e28410dcd0667f56253/start"*
*Jan 11 15:25:25 jenkins-build-centos7 docker: 
time="2016-01-11T15:25:25.350407441-05:00" level=info msg="POST 
/v1.21/containers/02b6dbc8af81794efe1aeeb43f861e47a803bb3672a9991a63120632127df247/stop?t=10"*
*Jan 11 15:25:35 jenkins-build-centos7 docker: 
time="2016-01-11T15:25:35.351254649-05:00" level=info msg="Container 
02b6dbc8af81794efe1aeeb43f861e47a803bb3672a9991a63120632127df247 failed to 
exit within 10 seconds of SIGTERM - using the force"*
*Jan 11 15:25:35 jenkins-build-centos7 docker: 
time="2016-01-11T15:25:35.359447435-05:00" level=info msg="GET 
/v1.21/exec/39fd717f8dd9797e9a967edc995e0f0e29ed19bcd1837e28410dcd0667f56253/json"*


It looks like the docker-workflow plugin is immediately issuing a *stop* 
call to the API, right after the *exec* call.


Attempt at a solution

I noticed that the docker-workflow plugin calls the image by passing the 
*cat* command:

*docker run -t -d -u 1000:1000 -w /home/jenkins/workspace/docker-test -v 
/home/jenkins/workspace/docker-test:/home/jenkins/workspace/docker-test:rw 
-e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e 
******** -e ******** -e ******** -e ******** -e ******** -e ******** -e 
******** -e ******** -e ******** -e ******** debian:7 cat*

...which would cause the container to run *cat* and then immediately exit. 
I created a simple dockerfile, based off of the *debian:7* image, and set 
the *ENTRYPOINT* to *["ping", "localhost"]*, just to have a process that 
would run indefinitely, even if docker-workflow supplied *cat* as the 
command to *docker run*. Unfortunately this changed nothing, and I still 
noticed the same API call to *stop* in */var/log/messages*.

I'm at a loss here. Anyone seen anything like this before?

Thanks,
Mike Wilkerson

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/d6e2b48e-7639-403a-bdd9-9f48f87e4e2b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to