Jenkins无法使用docker插件启动docker slave

时间:2019-02-26 18:37:15

标签: docker jenkins jenkins-plugins centos7

我正在使用Jenkins Docker插件在Docker主机上动态启动从站。 Jenkins主服务器在同一主机上运行。构建时,它会在docker-host上选择一个随机端口,并且无法连接到该端口。它启动docker容器。这是日志。不多说。如何调试问题?

INFO: Started container ID 54fe5780ca820a6e2b7cae40610cfc3229dbf889b0c66d6e34a39b74e13aaec7 for node slave-0000w16w841rc from image: jenkinsubuntu
Feb 28, 2019 9:35:54 PM com.nirima.jenkins.plugins.docker.utils.PortUtils$ConnectionCheckSSH execute
INFO: SSH port is open on 127.0.0.1:10007
[02/28/19 21:35:54] SSH Launch of slave-0000w16w841rc on 127.0.0.1 failed in 29 ms 
Feb 28, 2019 9:36:03 PM hudson.slaves.NodeProvisioner$2 run
INFO: Image of jenkinsubuntu provisioning successfully completed. We have now 7 computer(s) `

2 个答案:

答案 0 :(得分:5)

找不到答案。但是最终在Docker插件的Docker模板中选择了print(is_odd(2)) 的connect方法,这反过来使之起作用。

答案 1 :(得分:1)

虽然您已经发布了另一种方法,但是在这里,当您询问如何调试问题时应该注意些什么

  • 您需要一个包含SSHD的图片,并且plugin's documentation建议使用jenkins/ssh-slave作为自定义图片的基础。
  • 根据您提供的日志,您似乎使用了一个名为jenkinsubuntu的自定义图片,并假设该图片基于jenkins/ssh-slave,那么您需要确保您没有覆盖所描述的原始入口点在the documentation中:
      

    避免覆盖docker命令,因为SSH Launcher依赖它。

         

    可以在代理运行时开始并建立连接之前,使用Entrypoint在构建代理容器内运行某些辅助服务。只要确保您的入口点最终运行传递的命令即可:

         

    执行“ $ @”

  • 最后确保要在其上进行ssh的主机包含一个私钥,该私钥与注入到容器内的公钥匹配。

    如果第一点和第二点都得到照顾,那么这就是调试ssh问题的方法。

    • 您可以登录并尝试在ssh运行时使用ssh登录到同一容器。
    • 如果上一步有效,请使用docker logs或检查/var/log来检查日志,请注意,您可能需要将LogLevel下的/etc/ssh/sshd_config更改为{{ 1}}进行ssh登录尝试的所有详细信息,保存在VERBOSE文件中,您可以在其中识别问题