docker - 为 Jenkins slave 编写 Swarm 文件
问题描述
我正在尝试创建一个撰写文件jenkins/slave
以在我的单节点群中运行。
我使用的图像是jenkins/slave
docker
run
与图像一起使用的命令是docker run -i --rm --name agent1 --init -v agent1-workdir:/home/jenkins/agent jenkins/agent java -jar /usr/share/jenkins/agent.jar -workDir /home/jenkins/agent
,我的撰写文件如下所示:(
'local_registry:5000/jenkins_ansible_slave' 是构建的图像,我已将其推送到本地注册表)
slave1:
image: 'local_registry:5000/jenkins_ansible_slave'
ports:
- "22:22"
init: true
volumes:
- "/home/user/agent:/home/jenkins/agent"
command: "java -jar /usr/share/jenkins/agent.jar -workDir /home/jenkins/agent"
networks:
- net
slave1
服务未启动,当我检查服务日志时出现此错误
DEVOPS-STACK_slave1.1.vcm7tc3i0ral@local_registry | INFO: Using /home/jenkins/agent/remoting as a remoting work directory
DEVOPS-STACK_slave1.1.vcm7tc3i0ral@local_registry | May 03, 2021 3:27:01 PM org.jenkinsci.remoting.engine.WorkDirManager setupLogging
DEVOPS-STACK_slave1.1.vcm7tc3i0ral@local_registry | INFO: Both error and output logs will be printed to /home/jenkins/agent/remoting
DEVOPS-STACK_slave1.1.vcm7tc3i0ral@local_registry | Exception in thread "main" java.io.EOFException: unexpected stream termination
DEVOPS-STACK_slave1.1.vcm7tc3i0ral@local_registry | at hudson.remoting.ChannelBuilder.negotiate(ChannelBuilder.java:415)
DEVOPS-STACK_slave1.1.vcm7tc3i0ral@local_registry | at hudson.remoting.ChannelBuilder.build(ChannelBuilder.java:360)
DEVOPS-STACK_slave1.1.vcm7tc3i0ral@local_registry | at hudson.remoting.Launcher.main(Launcher.java:762)
DEVOPS-STACK_slave1.1.vcm7tc3i0ral@local_registry | at hudson.remoting.Launcher.runWithStdinStdout(Launcher.java:710)
DEVOPS-STACK_slave1.1.vcm7tc3i0ral@local_registry | at hudson.remoting.Launcher.run(Launcher.java:396)
DEVOPS-STACK_slave1.1.vcm7tc3i0ral@local_registry | at hudson.remoting.Launcher.main(Launcher.java:296)
DEVOPS-STACK_slave1.1.vcm7tc3i0ral@local_registry | <===[JENKINS REMOTING CAPACITY]===>rO0ABXNyABpodWRzb24ucmVtb3RpbmcuQ2FwYWJpbGl0eQAAAAAAAAABAgABSgAEbWFza3hwAAAAAAAAAf4=
知道这里有什么问题吗?
谢谢,
解决方案
添加
stdin_open: true # docker run -i
tty: true # docker run -t
我认为这将解决您的问题。你的 docker-compose 配置应该是这样的。
slave1:
image: 'local_registry:5000/jenkins_ansible_slave'
ports:
- "22:22"
init: true
volumes:
- "/home/user/agent:/home/jenkins/agent"
command: "java -jar /usr/share/jenkins/agent.jar -workDir /home/jenkins/agent"
networks:
- net
stdin_open: true # docker run -i
tty: true # docker run -t
推荐阅读
- javascript - 如果 td 满足 javascript 中的条件,如何显示隐藏 tr
- javascript - D3 - 添加元素但链中的下一个 .append("path") 永远不会执行
- javascript - 我想在 js 中添加 css 到 document.write
- c# - 如何在 .NET Core 3.1 的 Azure Functions 中将 Serilog 配置为默认日志提供程序?
- shell - 通过 JenkinsFile/pipeline 更改文件内容
- node.js - ExpressJS 应用程序的 SOAP 包装器/中间件
- javascript - React 在更新实时数据库时运行无限循环
- google-tag-manager - 根据数据层变量值触发标签
- laravel - 在 laravel 中按全名搜索用户
- android - 如何在 Flutter 中将 png 图像转换为 jpg 格式?