【问题标题】:could configure jenkins slave in docker container from jenkins server in docker可以从 docker 中的 jenkins 服务器在 docker 容器中配置 jenkins slave
【发布时间】:2019-08-13 13:43:06
【问题描述】:

我正在通过 manning 在实践中练习 docker。

技术秘籍是关于配置 jenkins slave,它是 docker 容器。

下面是 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 镜像作为容器运行

$ 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

以下是节点配置详情-

然后我收到错误消息 此代理已脱机,因为 Jenkins 未能在其上启动代理进程

下面是错误堆栈跟踪

[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 主机没有识别从服务器。

【问题讨论】:

    标签: docker jenkins


    【解决方案1】:

    只需将节点配置中的Host Key verification strategy 更改为Non verfiying Verification Strategy

    【讨论】:

      【解决方案2】:

      您正在使用Host Key verification strategy 方法检查known_hosts 文件(通常位于~/.ssh/known_hosts)。然而,jenkins 服务器正在检查 docker 容器中的 /var/jenkins_home/.ssh/known_hosts,它现在可能是空的。

      您可以使用Manually provided key Verification Strategy 并将公钥粘贴到那里或在this document 的帮助下使用其他方法。

      【讨论】:

        猜你喜欢
        • 2018-07-18
        • 1970-01-01
        • 1970-01-01
        • 2021-07-13
        • 1970-01-01
        • 2018-04-28
        • 2019-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多