当前位置: 首页 > 知识库问答 >
问题:

可以从docker中的jenkins服务器在docker容器中配置jenkins从服务器

公孙志尚
2023-03-14

我在曼宁的练习中练习docker。

技术配方是关于配置jenkins从站,即docker容器。

以下是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 

我使用命令构建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的简单构建配置,但由于从机处于脱机状态,所以构建没有运行。

任何想法为什么詹金斯主服务器没有识别从属服务器。

共有2个答案

杨超
2023-03-14

您正在使用主机密钥验证策略方法来检查known_hosts文件(通常它位于 ~/.ssh/known_hosts)。但是,jenkins 服务器正在 docker 容器中检查 /var/jenkins_home/.ssh/known_hosts,现在可能是空的。

您可以使用< code > Manually provided key Verification Strategy(手动提供的密钥验证策略)并将公钥粘贴在那里,或者在本文档的帮助下使用其他方法。

柯子琪
2023-03-14

只需在节点配置中将主机密钥验证策略更改为非验证验证验证策略即可。

 类似资料:
  • 问题内容: 我运行基于节点映像的Docker容器(Windows的Docker快速入门终端) 我启动节点客户端(在端口3000上)和节点(基于Express)的服务器(在3009 端口上)。客户端通过AJAX调用访问REST服务器。 它可以完美地从主机运行(客户端访问localhost:3009并返回结果)。我可以拨打:3009,然后再次得到正确的结果。 但是当我构建并运行docker image

  • 我正在使用Spring Cloud创建微服务架构。 我正在使用Spring Cloud中的以下功能 Zuul–API网关服务,提供动态路由、监控、弹性、安全等功能- 功能区–客户端负载平衡器 Faign–声明性REST客户端 Eureka–服务注册和发现 Sleuth–通过日志进行分布式跟踪 Zipkin–具有请求可视化的分布式跟踪系统 Hystrix-适用于所有API的断路器、容错、Hystri

  • 我一直试图在我的docker容器中运行cron作业,但当容器启动时,我似乎无法让cron服务运行。我可以远程进入运行容器并运行“cron”以使服务在没有问题的情况下启动。我在我的DockerFile中包含了这个,为什么命令没有被执行呢? Docker-compose.yml

  • 我有一个运行Ubuntu的服务器,安装了Redis和Docker。我正在创建托管在Docker容器中的服务。如何将Docker容器中运行的服务与Docker外部运行的Redis连接起来? 我可以ping服务器。ioredis驱动程序无法连接到redis。错误:connect ECONREFUSE:6379

  • 我有一个centos机器/服务器,我想在其中运行多个docker容器实例,其中有docker-machines和virtualbox驱动程序,用于测试目的。这是可行的吗? 我有一张最新Centos7的docker图像。然后我跑了

  • 问题内容: 目前,我在需要连接到camunda的docker容器内运行一个node.js应用程序,该容器在另一个容器中运行。 我使用以下命令启动容器 这两个应用程序现在都在运行,我可以通过在端口8000上导航到主机的IP来访问camunda,运行wget 还会返回camunda页面。使用和键入我的应用程序容器时,我无法访问camunda。相反,我得到以下错误: 当我使用将我的应用程序容器链接到ca