簡體   English   中英

可以從Docker中的jenkins服務器在docker容器中配置jenkins從屬

[英]could configure jenkins slave in docker container from jenkins server in docker

我正在通過配員練習docker。

技術配方是關於配置作為Docker容器的jenkins slave。

以下是jenkins_slave的Dockerfile

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 

我使用以下命令構建了docker映像

docker build -t jenkins_slave .

然后我使用以下命令將docker images作為容器運行

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

然后我使用以下docker命令運行jenkins服務器

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

以下是節點配置詳細信息-

節點配置詳細信息

然后,我收到錯誤消息,指出此代理處於脫機狀態,因為詹金斯無法在其上啟動代理進程

從節點錯誤

下面是錯誤堆棧跟蹤

[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

我有一個稱為test的簡單構建配置,但是由於從屬服務器處於脫機狀態,因此該構建未運行。

構建配置

知道為什么jenkins主服務器無法識別從服務器。

只需在節點配置Non verfiying Verification StrategyHost Key verification strategy更改為“ Non verfiying Verification Strategy Host Key verification strategy即可。

您正在使用“ Host Key verification strategy方法來檢查known_hosts文件(通常位於~/.ssh/known_hosts )。 但是,jenkins服務器正在檢查/var/jenkins_home/.ssh/known_hosts容器中的/var/jenkins_home/.ssh/known_hosts (現在可能為空)。

您可以使用Manually provided key Verification Strategy然后在其中粘貼公鑰,或者在本文檔的幫助下使用其他方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM