docker配置jenkins slave时,报provided port 50000 is not reachable异常

1.背景描述

采用docker配置jenkins的master-slave时,在slave机器执行从节点对接master命令:

 java -jar agent.jar -jnlpUrl http://192.168.10.136:8080/computer/slave1/slave-agent.jnlp -secret 1c6f46bcb3d50b9bd765e27a77ac8b8230555639b2f9c21e20c41720b0219505 -workDir "/usr/local/data/jenkins/jenkins_slave"

2.异常信息:
严重: http://192.168.10.136:8080/ provided port:50000 is not reachable
java.io.IOException: http://192.168.10.136:8080/ provided port:50000 is not reachable
        at org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver.resolve(JnlpAgentEndpointResolver.java:314)
        at hudson.remoting.Engine.innerRun(Engine.java:694)
        at hudson.remoting.Engine.run(Engine.java:519)

3.异常原因:

docker容器下jenkins设置的端口没有映射到宿主机端口。

4.解决方法

4.1 确认并指定master机器jenkins代理端口为指定端口,并勾选代理协议

docker配置jenkins slave时,报provided port 50000 is not reachable异常_第1张图片

4.2 启动docker时,设置50000端口映射

docker run -d -p 8080:8080 -p 50000:5000 --name jenkins \
-u root \
-v /usr/local/data/jenkins/jenkins_home:/var/jenkins_home \
jenkins/jenkins

 

附:运行时docker容器添加端口映射

第一种方式:

1. 获取容器IP

docker inspect <container_id> | grep IPAddress

2. 通过iptable转发端口,并做映射

iptables -t nat -A DOCKER -p tcp --dport 50000 -j DNAT --to-destination 172.17.0.3:50000

3.重启容器

docker restart <container_id>

第二种方式:

1. 将容器commit为镜像

docker commit -a='作者' -m='备注' 运行时容器ID 新镜像名称

2. 重新运行新镜像,并设置50000端口映射

posted @ 2021-05-17 20:06  sophiascpn  阅读(1592)  评论(0编辑  收藏  举报