Re: Jenkins docker-workflow plugin - docker container killed prematurely while using ".inside"

2016-01-12 Thread Mike Wilkerson
Slight correction—Looks like *cat* will keep the docker container running 
as long as the *-i* or *-t* flag is passed.

On Monday, January 11, 2016 at 6:32:40 PM UTC-5, Mike Wilkerson wrote:
>
> 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 jenkinsci-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/8add3a29-3799-4530-a0c2-023342bbf0c5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Jenkins docker-workflow plugin - docker container killed prematurely while using ".inside"

2016-01-11 Thread Mike Wilkerson
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 jenkinsci-users+unsubscr...@googlegroups.com.
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.