question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

docker-slave never connects to master if User is defined in configuration

See original GitHub issue

Official docker jenkinsci/slave can’t connect to master with JNLP if User defined in Docker Template settings because ‘su -’ is asking password:

su - jenkins -c 'java -jar /home/jenkins/slave.jar -jnlpUrl http://172.17.0.1:8080//computer/local-40540371074b//slave-agent.jnlp  -secret 97fd6c89df227d6d938ddc313bed17172c635a9c4a0084facf12a363cf5040f4
Password:

Steps to reproduce:

  1. Installed docker-engine with TCP listen socket
$ docker version
Client:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:38:45 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:38:45 2017
 OS/Arch:      linux/amd64
  1. Start jenkins:
mkdir $(pwd)/jenkins_home ; docker run -d -p 8080:8080 --name=jenkins-master -p 50000:50000 -v /tmp/jenkins_home:/var/jenkins_home --env JAVA_OPTS="-Djenkins.slaves.DefaultJnlpSlaveReceiver.disableStrictVerification=true" jenkins
  1. Make initial steps and install docker-plugin
  2. Manage Jenkins -> Configure Global Security -> Agent protocols -> Enable Java Web Start Agent Protocol/4
  3. Manage Jenkins -> Configure System -> Cloud -> Add new cloud docker: Name: local Docker URL: tcp://172.17.0.1:2375 Add Docker template: Docker Image: jenkinsci/slave Labels: docker-slave Launch method: (Experimental) Docker JNLP launcher User: jenkins -> Save
  4. Create new pipeline job and run it
node('docker-slave') {
    echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}"
    stage('Test') {
        echo 'stage Test'
    }
}

jenkins-slave container logs:

$ docker logs -f hungry_carson
+ cat
+ chmod +x /tmp/init.sh
+ exec /tmp/init.sh
+ export CONFIG=/tmp/config.sh
+ CONFIG=/tmp/config.sh
+ '[' '!' -f /tmp/config.sh ']'
+ echo 'No config, sleeping for 1 second'
No config, sleeping for 1 second
+ sleep 1
+ '[' '!' -f /tmp/config.sh ']'
+ echo 'No config, sleeping for 1 second'
No config, sleeping for 1 second
+ sleep 1
+ '[' '!' -f /tmp/config.sh ']'
+ echo 'No config, sleeping for 1 second'
No config, sleeping for 1 second
+ sleep 1
+ '[' '!' -f /tmp/config.sh ']'
+ echo 'No config, sleeping for 1 second'
No config, sleeping for 1 second
+ sleep 1
+ '[' '!' -f /tmp/config.sh ']'
+ echo 'No config, sleeping for 1 second'
No config, sleeping for 1 second
+ sleep 1
+ '[' '!' -f /tmp/config.sh ']'
+ echo 'No config, sleeping for 1 second'
No config, sleeping for 1 second
+ sleep 1
+ '[' '!' -f /tmp/config.sh ']'
+ echo 'No config, sleeping for 1 second'
No config, sleeping for 1 second
+ sleep 1
+ '[' '!' -f /tmp/config.sh ']'
+ echo 'No config, sleeping for 1 second'
No config, sleeping for 1 second
+ sleep 1
+ '[' '!' -f /tmp/config.sh ']'
+ echo 'No config, sleeping for 1 second'
No config, sleeping for 1 second
+ sleep 1
+ '[' '!' -f /tmp/config.sh ']'
+ echo 'No config, sleeping for 1 second'
No config, sleeping for 1 second
+ sleep 1
+ '[' '!' -f /tmp/config.sh ']'
+ echo 'Found config file'
Found config file
+ source /tmp/config.sh
++ JENKINS_URL=http://172.17.0.1:8080/
++ JENKINS_USER=jenkins
++ JENKINS_HOME=/home/jenkins
++ COMPUTER_URL=computer/local-40540371074b/
++ COMPUTER_SECRET=97fd6c89df227d6d938ddc313bed17172c635a9c4a0084facf12a363cf5040f4
+ '[' -z http://172.17.0.1:8080/ ']'
+ '[' -z computer/local-40540371074b/ ']'
+ '[' '!' -d /home/jenkins ']'
+ '[' -z /home/jenkins ']'
++ command -v curl
+ '[' -x /usr/bin/curl ']'
+ curl -o /home/jenkins/slave.jar http://172.17.0.1:8080//jnlpJars/slave.jar
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  699k  100  699k    0     0   134M      0 --:--:-- --:--:-- --:--:--  170M
+ env
HOSTNAME=40540371074b
TERM=xterm
CA_CERTIFICATES_JAVA_VERSION=20140324
CONFIG=/tmp/config.sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/home/jenkins
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
LANG=C.UTF-8
JAVA_VERSION=8u102
JAVA_DEBIAN_VERSION=8u102-b14.1-1~bpo8+1
HOME=/home/jenkins
SHLVL=1
_=/usr/bin/env
+ RUN_OPTS='-jnlpUrl http://172.17.0.1:8080//computer/local-40540371074b//slave-agent.jnlp '
+ '[' '!' -z 97fd6c89df227d6d938ddc313bed17172c635a9c4a0084facf12a363cf5040f4 ']'
+ RUN_OPTS+=' -secret 97fd6c89df227d6d938ddc313bed17172c635a9c4a0084facf12a363cf5040f4 '
+ RUN_CMD='java -jar /home/jenkins/slave.jar -jnlpUrl http://172.17.0.1:8080//computer/local-40540371074b//slave-agent.jnlp  -secret 97fd6c89df227d6d938ddc313bed17172c635a9c4a0084facf12a363cf5040f4 '
+ '[' '!' -z jenkins ']'
+ '[' xjenkins '!=' xroot ']'
+ '[' jenkins '!=' null ']'
+ su - jenkins -c 'java -jar /home/jenkins/slave.jar -jnlpUrl http://172.17.0.1:8080//computer/local-40540371074b//slave-agent.jnlp  -secret 97fd6c89df227d6d938ddc313bed17172c635a9c4a0084facf12a363cf5040f4 '
Password:

jenkins-master container logs:

docker logs -f jenkins-master
INFO: Trying to run container for jenkinsci/slave
Jan 17, 2017 9:02:20 AM hudson.slaves.NodeProvisioner$2 run
INFO: Image of jenkinsci/slave provisioning successfully completed. We have now 2 computer(s)
Jan 17, 2017 9:02:20 AM com.nirima.jenkins.plugins.docker.launcher.DockerComputerJNLPLauncher launch
INFO: Starting connection command for 40540371074b04077239860ad972452a10738f6366e73d04723ecfc561591322
Jan 17, 2017 9:02:20 AM com.nirima.jenkins.plugins.docker.launcher.DockerComputerJNLPLauncher launch
INFO: Successfully executed jnlp connection for '40540371074b04077239860ad972452a10738f6366e73d04723ecfc561591322'
Jan 17, 2017 9:04:20 AM com.nirima.jenkins.plugins.docker.launcher.DockerComputerJNLPLauncher launch
INFO: Launch timeout, termintaing slave based on '40540371074b04077239860ad972452a10738f6366e73d04723ecfc561591322'
Jan 17, 2017 9:04:20 AM com.nirima.jenkins.plugins.docker.DockerSlave _terminate
INFO: Disconnected computer
Jan 17, 2017 9:04:30 AM com.nirima.jenkins.plugins.docker.DockerSlave _terminate
INFO: Stopped container 40540371074b04077239860ad972452a10738f6366e73d04723ecfc561591322
Jan 17, 2017 9:04:31 AM com.nirima.jenkins.plugins.docker.DockerSlave _terminate
INFO: Removed container 40540371074b04077239860ad972452a10738f6366e73d04723ecfc561591322
Jan 17, 2017 9:04:40 AM com.nirima.jenkins.plugins.docker.DockerCloud provision
INFO: Asked to provision 1 slave(s) for: docker-slave
Jan 17, 2017 9:04:40 AM com.nirima.jenkins.plugins.docker.DockerCloud provision
INFO: Will provision 'jenkinsci/slave', for label: 'docker-slave', in cloud: 'local'
Jan 17, 2017 9:04:40 AM com.nirima.jenkins.plugins.docker.DockerCloud addProvisionedSlave
INFO: Provisioning 'jenkinsci/slave' number '0' on 'local'; Total containers: '1'
Jan 17, 2017 9:04:40 AM hudson.slaves.NodeProvisioner$StandardStrategyImpl apply
INFO: Started provisioning Image of jenkinsci/slave from local with 1 executors. Remaining excess workload: 0
Jan 17, 2017 9:04:40 AM com.nirima.jenkins.plugins.docker.DockerCloud provisionWithWait
INFO: Trying to run container for jenkinsci/slave
Jan 17, 2017 9:04:50 AM hudson.slaves.NodeProvisioner$2 run
INFO: Image of jenkinsci/slave provisioning successfully completed. We have now 2 computer(s)
Jan 17, 2017 9:04:50 AM com.nirima.jenkins.plugins.docker.launcher.DockerComputerJNLPLauncher launch
INFO: Starting connection command for 43d8860cbec61632b48fe8d6dc0e8d688608a5f66862891c282f6a9d8e9a5768
Jan 17, 2017 9:04:50 AM com.nirima.jenkins.plugins.docker.launcher.DockerComputerJNLPLauncher launch
INFO: Successfully executed jnlp connection for '43d8860cbec61632b48fe8d6dc0e8d688608a5f66862891c282f6a9d8e9a5768'

Manage jenkins -> Manage nodes -> log:

Starting connection command for 40540371074b04077239860ad972452a10738f6366e73d04723ecfc561591322
Successfully executed jnlp connection for 40540371074b04077239860ad972452a10738f6366e73d04723ecfc561591322
Waiting slave connection...
Waiting slave connection...
Waiting slave connection...
Waiting slave connection...
Waiting slave connection...
Waiting slave connection...
Waiting slave connection...
Waiting slave connection...
Waiting slave connection...

try reproduce with evarga/jenkins-slave image with dumb freestyle job

Not reproducing:

docker logs serene_murdock
...
+ wget http://172.17.0.1:8080//jnlpJars/slave.jar -O /home/jenkins/slave.jar
/tmp/init.sh: line 42: wget: command not found

Manage old data

No old data was found.

Installed plugins:

$ curl -sSL "http://$JENKINS_HOST/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins" | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \2\n/g'|sed 's/ /:/'
bouncycastle-api:2.16.0
cloudbees-folder:5.16
structs:1.5
junit:1.19
pam-auth:1.3
windows-slaves:1.2
display-url-api:0.5
mailer:1.18
ldap:1.13
token-macro:2.0
external-monitor-job:1.7
icon-shim:2.0.3
matrix-auth:1.4
antisamy-markup-formatter:1.5
script-security:1.25
matrix-project:1.8
build-timeout:1.18
credentials:2.1.10
workflow-step-api:2.7
plain-credentials:1.3
credentials-binding:1.10
timestamper:1.8.7
workflow-api:2.8
workflow-basic-steps:2.3
resource-disposer:0.6
ws-cleanup:0.32
pipeline-milestone-step:1.3
workflow-support:2.12
pipeline-build-step:2.4
jquery-detached:1.2.1
pipeline-input-step:2.5
ace-editor:1.1
workflow-scm-step:2.3
scm-api:2.0.1
workflow-cps:2.23
pipeline-stage-step:2.2
workflow-job:2.9
pipeline-graph-analysis:1.3
pipeline-rest-api:2.4
handlebars:1.1.1
momentjs:1.1.1
pipeline-stage-view:2.4
ssh-credentials:1.12
git-client:2.2.1
git-server:1.7
workflow-cps-global-lib:2.5
branch-api:2.0.0
workflow-multibranch:2.10
durable-task:1.12
workflow-durable-task-step:2.8
workflow-aggregator:2.4
github-api:1.84
git:3.0.2
github:1.25.1
github-branch-source:2.0.0
pipeline-github-lib:1.0
github-organization-folder:1.6
ssh-slaves:1.12
docker-plugin:0.16.2

config.xml

<clouds>
  <com.nirima.jenkins.plugins.docker.DockerCloud plugin="docker-plugin@0.16.2">
    <name>local</name>
    <templates>
      <com.nirima.jenkins.plugins.docker.DockerTemplate>
        <configVersion>2</configVersion>
        <labelString>docker-slave</labelString>
        <launcher class="com.nirima.jenkins.plugins.docker.launcher.DockerComputerJNLPLauncher">
          <launchTimeout>120</launchTimeout>
          <user>jenkins</user>
        </launcher>
        <remoteFsMapping>/var/jenkins_home</remoteFsMapping>
        <remoteFs>/home/jenkins</remoteFs>
        <instanceCap>1</instanceCap>
        <mode>NORMAL</mode>
        <retentionStrategy class="com.nirima.jenkins.plugins.docker.strategy.DockerOnceRetentionStrategy">
          <idleMinutes>10</idleMinutes>
          <idleMinutes defined-in="com.nirima.jenkins.plugins.docker.strategy.DockerOnceRetentionStrategy">10</idleMinutes>
        </retentionStrategy>
        <numExecutors>1</numExecutors>
        <dockerTemplateBase>
          <image>jenkinsci/slave</image>
          <dockerCommand></dockerCommand>
          <lxcConfString></lxcConfString>
          <hostname></hostname>
          <dnsHosts/>
          <network></network>
          <volumes/>
          <volumesFrom2/>
          <environment/>
          <bindPorts></bindPorts>
          <bindAllPorts>false</bindAllPorts>
          <privileged>false</privileged>
          <tty>false</tty>
          <extraHosts class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
            <c class="list"/>
            <list reference="../c"/>
          </extraHosts>
        </dockerTemplateBase>
        <removeVolumes>false</removeVolumes>
        <pullStrategy>PULL_LATEST</pullStrategy>
      </com.nirima.jenkins.plugins.docker.DockerTemplate>
    </templates>
    <serverUrl>tcp://172.17.0.1:2375</serverUrl>
    <connectTimeout>0</connectTimeout>
    <readTimeout>0</readTimeout>
    <version></version>
    <credentialsId></credentialsId>
    <containerCap>100</containerCap>
  </com.nirima.jenkins.plugins.docker.DockerCloud>
</clouds>

Issue Analytics

  • State:closed
  • Created 7 years ago
  • Reactions:2
  • Comments:7 (1 by maintainers)

github_iconTop GitHub Comments

1reaction
mister2dcommented, Aug 1, 2017

Any new developments? I’m curious to the solution myself.

1reaction
uvwildcommented, Feb 21, 2017

same here!!! what are the requirements for the slave image? There definitely are some and they are not specified anywhere!

Read more comments on GitHub >

github_iconTop Results From Across the Web

Jenkins: running build does not provision docker slave
In the job configuration: I've checked "Docker container"; added my tag; source code is connected via git checkout. enter image description here.
Read more >
How To Setup Docker Containers As Build Agents For Jenkins
In this guide, I will walk you through the steps for configuring docker containers as build agents/slaves for Jenkins using the Jenkins Docker...
Read more >
Run Jenkins in Slave Master Config in Docker - YouTube
In this video we explore the customizations available in the appcontainers/jenkins docker container image. This container is set to allow ...
Read more >
Setup Docker containers as Build Slaves for Containerized ...
Jenkins master connects to the docker host using REST API's. So we need to enable the remote API for our docker host. All...
Read more >
Confusion with Jenkins Docker Plugin and ... - Server Fault
According to your Docker Plugin configuration, you are using 172.17.0.1 as the Docker host. From the slave or master container, ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found