企业实战(23)基于Docker平台的Jenkins添加node节点与报错详解(2)

简介: 企业实战(23)基于Docker平台的Jenkins添加node节点与报错详解(2)

相关文章


企业实战(23)基于Docker平台部署Jenkins中国定制版(1)


添加node节点前配置

1.png2.png

开始添加node节点

3.png4.png5.png

 在添加node节点时,填好“名称”、“描述”、“执行器数量”、“远程工作目录”、“标签”、“用法(一般默认)”、“启动方式(根据情况)”,完成后保存。

6.png7.png

这时node1节点还是未在线状态,点击“node1”名称会有节点连接Jenkins的方法。

8.png

注意: 这里必须用--user root 用户进入容器才可以创建工作目录,默认进入是jenkins用户,会提示权限不足


[root@localhost ~]# docker ps -a    //容器运行时需要映射代理连接端口50000
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                        PORTS                                              NAMES
1dad787d6f46        myjenkins:v1           "/sbin/tini -- /usr/…"   38 minutes ago      Up 11 minutes                 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   myjenkins
[root@localhost ~]# docker exec -it --user root jenkins /bin/bash
root@367402ec96bf:/# mkdir -p /opt/jenkins    //创建工作目录
root@367402ec96bf:/# cd /opt/jenkins/
root@367402ec96bf:/opt/jenkins# wget http://192.168.1.8:8080/jnlpJars/agent.jar
root@367402ec96bf:/opt/jenkins# ls
agent.jar
root@367402ec96bf:/opt/jenkins# java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 90e0e5a0d61f67d551d029a22584632fb96f314acf1f3789372adbb747e81b11 -workDir "/opt/jenkins"
......
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed: 33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected    //连接成功

9.png

`报错`


 如果在容器中下载好agent.jar后,执行节点连接命令的时候出现下面的错误:


WARNING: Connection refused (Connection refused)

root@367402ec96bf:/opt/jenkins# java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 5cb49ff710c0dde742725fcb82dc2e8ccf4f612819e2b6889cfcb93207fc734a -workDir "/opt/jenkins"
......
WARNING: Connection refused (Connection refused)
Nov 16, 2020 3:57:42 AM hudson.remoting.jnlp.Main$CuiListener error
SEVERE: http://192.168.1.8:8080/ provided port:50000 is not reachable
java.io.IOException: http://192.168.1.8:8080/ provided port:50000 is not reachable
        at org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver.resolve(JnlpAgentEndpointResolver.java:314)
        at hudson.remoting.Engine.innerRun(Engine.java:693)
        at hudson.remoting.Engine.run(Engine.java:518)

解决:


1.查看正在运行的容器是否已经映射了前面在Jenkins管理界面设置中的“全局安全配置”里配置的代理指定端口(详情见顶图)

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                        PORTS                                              NAMES
1dad787d6f46        myjenkins:v1           "/sbin/tini -- /usr/…"   38 minutes ago      Up 11 minutes                 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   myjenkins

2.没有映射代理端口需要重新映射才能正常连接,有下面两种方法:


  • 2.1 `将当前已经运行的容器通过docker commit命令提交为一个镜像,然后重新执行docker run命令添加完整的端口映射。`(推荐)`
[root@localhost ~]# docker stop jenkins
[root@localhost ~]# docker commit -m "my jenkins" 367402ec96bf myjenkins:v1
[root@localhost ~]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
myjenkins              v1                  5349fdcc8533        7 minutes ago       662MB
jenkinszh/jenkins-zh   latest              2cb4cce6db0a        5 months ago        656MB
[root@localhost ~]# docker run -itd --name=myjenkins -p 8080:8080 -p 50000:50000 myjenkins:v1
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                              NAMES
1dad787d6f46        myjenkins:v1        "/sbin/tini -- /usr/…"   5 seconds ago       Up 4 seconds        0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   myjenkins

进入浏览器访问Jenkins页面,重新完成入门步骤后进入Jenkins管理界面首页,按照本教程从头开始进行“添加node节点前配置”、“开始添加node节点”步骤,进行至“节点连接Jenkins方式”时,按照下面步骤重新操作即可。

[root@localhost ~]# docker exec -it --user root myjenkins /bin/bash
root@1dad787d6f46:/# cd /opt/jenkins/
root@1dad787d6f46:/opt/jenkins# rm -rf *    //删除之前的文件
root@1dad787d6f46:/opt/jenkins# wget http://192.168.1.8:8080/jnlpJars/agent.jar  //重新复制连接代理的agent.jar链接
root@1dad787d6f46:/opt/jenkins# ls
agent.jar
root@1dad787d6f46:/opt/jenkins# java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 90e0e5a0d61f67d551d029a22584632fb96f314acf1f3789372adbb747e81b11 -workDir "/opt/jenkins"
......
INFO: Agent discovery successful
  Agent address: 192.168.1.8
  Agent port:    50000
  Identity:      33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to 192.168.1.8:50000
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed: 33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected
  • 2.2 `通过配置文件修改已经运行的docker容器端口映射`

优化


 在上面代理连接Jenkins的时候,可以看到我们是直接通过执行命令连接,这种方式会一直占用系统终端,这时我们可以通过编写一个脚本来实现不占用终端一直运行脚本达到代理连接Jenkins的效果。(在容器中可以通过宿主机写好脚本后,与jenkins容器共享脚本目录,这样容器中也可以直接访问脚本目录执行脚本)

nohup 不挂断地运行命令   &  在后台运行 (一般这两个一起用)


nohup command &

[root@localhost jenkins]# vim start.sh
#!/bin/bash
nohup java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 90e0e5a0d61f67d551d029a22584632fb96f314acf1f3789372adbb747e81b11 -workDir "/opt/jenkins" &
(可以通过commit新镜像重新执行docker run 映射端口跟共享目录)
# sh start.sh
# ps -aux | grep start.sh    //通过ps查看后台运行的脚本
root      15269  0.0  0.0 112720   996 pts/0    S+   15:13   0:00 grep --color=auto start.sh
# tail -f nohup.out    //查看脚本后台执行启动日志
十一月 16, 2020 3:10:11 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Handshaking
十一月 16, 2020 3:10:11 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Connecting to 192.168.1.8:50000
十一月 16, 2020 3:10:11 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Trying protocol: JNLP4-connect
十一月 16, 2020 3:10:12 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Remote identity confirmed: 33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
十一月 16, 2020 3:10:12 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Connected

10.png


相关文章
|
3月前
|
Ubuntu Linux Shell
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
(已成功解决)Linux环境报错—bash: wget: command not found;常见Linux发行版本,Linux中yum、rpm、apt-get、wget的区别;Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
913 68
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
|
1月前
|
Linux Docker 容器
安装docker-18.06报错Error: libseccomp conflicts with docker-18.06
通过这些步骤,您可以成功在CentOS上安装Docker 18.06,并解决libseccomp的冲突问题。这些方法确保系统兼容性,并保证Docker的正常运行。
69 27
|
3月前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
110 3
实战~如何组织一个多容器项目docker-compose
|
3月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
309 7
|
4月前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
175 0
|
4月前
|
存储 Cloud Native 开发者
深入探索容器化技术——Docker的实战应用
深入探索容器化技术——Docker的实战应用
65 0
|
2月前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
288 93
|
1月前
|
网络协议 API Docker
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
65 23
|
1月前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
354 15
|
3月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
347 78

热门文章

最新文章