【问题标题】:Cannot connect Jenkins jlnp slaves to Centos 7 master installed using Docker jenkins/jenkins?无法将 Jenkins jlnp 从属连接到使用 Docker jenkins/jenkins 安装的 Centos 7 主控?
【发布时间】:2018-02-01 09:28:04
【问题描述】:

Jenkins Centos 7 master 是从 Docker jenkins/jenkins 安装的。

我无法使用 jlnp 将旧的 Windows 7、macOS 和 Linux 从站连接到主站。

通常Jenkins从代理显示:

  • “尝试协议:JNLP4-connect”
  • “终止”
  • 重复

线索:

  • Windows7“Jenkins slave agent”偶尔会显示“Connected”。
  • 但是,Jenkins 主节点将节点显示为未连接

安装使用:

sudo systemctl start docker
sudo docker pull jenkins/jenkins
sudo docker run --name jenkins -p 8080:8080 -p 50000:50000 -u 1001 -v /home/jenkins/jenkins:/var/jenkins_home jenkins/jenkins
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload

添加线索:

  • 这是我第一次使用 Docker 安装的 jenkins。

  • 它正在运行 /home/jenkins/jenkins。

  • 我在 /jenkins/logs/slaves/ 中找不到有用的线索

  • 我在 master 和 slave 上都禁用了 Centos 和防火墙

    我是码头新手。

    sudo docker logs -f jenkins

显示 JNLP4 连接错误,说明 root 不可写。

我的问题听起来与此非常相似:

docker-slave never connects to master if User is defined in configuration #474

我改为运行 LTS 版本,现在我可以连接一个从机:

sudo docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

【问题讨论】:

  • 你的centos机器上sudo iptables -S的输出?在关闭所有容器并停止 docker 服务后执行此操作
  • 谢谢塔伦。我在问题中添加了“docker ps”和 iptables 输出。
  • 你自定义/etc/docker/daemon.json了吗?
  • 没有。我需要自定义/etc/docker/daemon.json吗?当我尝试重新启动詹金斯时,我复制了上面的“来自守护进程的错误响应......”。这在我第一次启动时没有发生。
  • 我不知道你为什么在 iptables 中没有看到 Docker 的任何规则?

标签: docker jenkins firewall ports jenkins-slave


【解决方案1】:

如果您仍然遇到问题,我建议您作为初学者尝试以特权用户身份运行。这当然不是一个好的安全做法,但至少它可以帮助您找到根本原因。更多详情见:https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities

docker run  --privileged=true  -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

我也会在您在 docker run 上公开的网络上进行更好的潜水,即 --network=host。更多选项见:https://docs.docker.com/engine/reference/run/#network-settings

docker run  --network=host -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

将允许您的 jenkins docker 接管机器的网络接口。同样,这不是一个好的做法,但非常适合调试目的。

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多