2017-12-07 3 views
0

Ich praktiziere Docker in der Praxis von Bemannung.Könnte Jenkins Slave in Docker Container von Jenkins Server im Docker konfigurieren

Das technische Rezept ist über die Konfiguration von jenkins Slave, die Docker Container ist.

Unten finden Sie die Dockerfile für jenkins_slave

FROM ubuntu:latest 
ENV DEBIAN_FRONTEND noninteractive 
RUN groupadd -g 1000 jenkins_slave 
RUN useradd -d /home/jenkins_slave -s /bin/bash \ 
-m jenkins_slave -u 1000 -g jenkins_slave 
RUN echo jenkins_slave:jpass | chpasswd 
RUN apt-get update && \ 
apt-get install -y openssh-server openjdk-8-jre wget iproute2 
RUN mkdir -p /var/run/sshd 
CMD ip route | grep "default via" \ 
| awk '{print $3}' && /usr/sbin/sshd -D 

I

Docker Bilder mit dem Befehl gebaut
docker build -t jenkins_slave . 

Dann laufe ich die Docker Bilder als Container den Befehl

$ docker run --name jenkins_slave -it -p 2222:22 jenkins_slave 
172.17.0.1 

Dann mit Ich führe den jenkins-Server mit dem folgenden Docker-Befehl

$ docker run --name jenkins_server -p 8080:8080 -p 50000:50000 dockerinpractice/jenkins:server 

Im Folgenden finden Sie die Knotenkonfigurationsdetails -

node configuration details

Dann erhalte ich die Fehlermeldung Dieser Agent offline sagen will, ist, weil Jenkins auf den Agent-Prozess zu starten, ist fehlgeschlagen

Slave node error

Unten ist der Fehler-Stack-Trace

[12/07/17 08:50:00] [SSH] Opening SSH connection to 172.17.0.1:2222. 
/var/jenkins_home/.ssh/known_hosts [SSH] No Known Hosts file was found at 
/var/jenkins_home/.ssh/known_hosts. Please ensure one is created at this path and that Jenkins can read it. 
Key exchange was not finished, connection is closed. 
java.io.IOException: There was a problem while connecting to 172.17.0.1:2222 
at com.trilead.ssh2.Connection.connect(Connection.java:834) 
at com.trilead.ssh2.Connection.connect(Connection.java:703) 
at com.trilead.ssh2.Connection.connect(Connection.java:617) 
at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:1284) 
at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:804) 
at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:793) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
at java.lang.Thread.run(Thread.java:748) 

Caused by: java.io.IOException: Key exchange was not finished, connection is closed. 
at com.trilead.ssh2.transport.KexManager.getOrWaitForConnectionInfo(KexManager.java:95) 
at com.trilead.ssh2.transport.TransportManager.getConnectionInfo(TransportManager.java:237) 
at com.trilead.ssh2.Connection.connect(Connection.java:786) 
... 9 more 
Caused by: java.io.IOException: The server hostkey was not accepted by the verifier callback 
at com.trilead.ssh2.transport.KexManager.handleMessage(KexManager.java:548) 
at com.trilead.ssh2.transport.TransportManager.receiveLoop(TransportManager.java:790) 
at com.trilead.ssh2.transport.TransportManager$1.run(TransportManager.java:502) 
... 1 more 

ich eine einfache Build-Konfiguration namens Test, aber der Bau ist nicht in Betrieb, da der Slave offline ist.

build configuration

Jede Idee, warum der jenkins Master nicht den Slave-Server zu identifizieren.

Antwort

2

Ändern Sie einfach die Host Key verification strategy zu Non verfiying Verification Strategy in der Knotenkonfiguration.