【问题标题】:Using Jenkins Docker Slaves on Amazon Linux 2 AMI在 Amazon Linux 2 AMI 上使用 Jenkins Docker 从站
【发布时间】:2021-02-24 02:14:42
【问题描述】:

我在使用 Jenkins 提供的标准 docker 镜像时遇到了一个奇怪的问题——尽管只有当 Jenkins 在 Amazon Linux 2 上运行时。 Ubuntu 18.04 上的 Jenkins 运行良好。

问题是 Jenkins 无法启动这些从属容器。

连接方法 - “附加 Docker 容器”,因为 docker 引擎在 Jenkins 服务器上本地运行。

有趣的是,如果我在新的 DockerFile 中设置 USER root(在 Ubuntu 上不需要),我已经能够让这些容器成功运行以在 Amazon Linux 上构建。但是,我需要这些以非 root 用户(如 jenkins 用户)身份运行,以便为 postgres 运行单元测试。

关于如何在 Amazon Linux 2 上实现这一目标有什么想法吗?我是否会缺少操作系统上的 docker 设置或安全设置?

我测试过的 Docker 镜像:

这些错误不是很有帮助:

连接到docker容器4486c8f2696f40c7de32160d78d6e2438abb1ff92517c71cf66b93baf3d0877f,运行命令java -jar /home/jenkins/remoting-4.6.jar -noReconnect -noKeepAlive -slaveLog /home/jenkins/agent.log HTTP/1.1 101 升级 内容类型:application/vnd.docker.raw-stream 连接:升级 升级:tcp API 版本:1.40 Docker-实验:假 操作系统类型:linux 服务器:Docker/19.03.13-ce (Linux)

错误:启动代理时出现意外错误。这可能是 Jenkins 中的一个错误

复制的基本设置:

Docker 模板:

【问题讨论】:

    标签: linux docker jenkins amazon-linux


    【解决方案1】:

    几天后出现同样的错误。

    我们在远程服务器上运行带有 Docker Cloud 的 dockerized Jenkins。 Jenkins 在远程服务器上启动包含,但随后失败:

    Connecting to docker container 32cc538f4287d7aaf11952b6cdcf619d92eb054d7d265ea72a3d7a6bdd1cf8d5, running command java -jar /home/jenkins/remoting-4.6.jar -noReconnect -noKeepAlive -slaveLog /home/jenkins/agent.log
    HTTP/1.1 101 UPGRADED
    Content-Type: application/vnd.docker.raw-stream
    Connection: Upgrade
    Upgrade: tcp
    Api-Version: 1.40
    Docker-Experimental: false
    Ostype: linux
    Server: Docker/19.03.13 (linux)
    ERROR: Unexpected error in launching an agent. This is probably a bug in Jenkins
    Also:   java.lang.Throwable: launched here
        at hudson.slaves.SlaveComputer._connect(SlaveComputer.java:283)
        at hudson.model.Computer.connect(Computer.java:435)
        at com.nirima.jenkins.plugins.docker.strategy.DockerOnceRetentionStrategy.start(DockerOnceRetentionStrategy.java:80)
        at com.nirima.jenkins.plugins.docker.strategy.DockerOnceRetentionStrategy.start(DockerOnceRetentionStrategy.java:35)
        at hudson.model.AbstractCIBase.updateComputer(AbstractCIBase.java:162)
        at hudson.model.AbstractCIBase.access$000(AbstractCIBase.java:44)
        at hudson.model.AbstractCIBase$2.run(AbstractCIBase.java:224)
        at hudson.model.Queue._withLock(Queue.java:1401)
        at hudson.model.Queue.withLock(Queue.java:1278)
        at hudson.model.AbstractCIBase.updateComputerList(AbstractCIBase.java:207)
        at jenkins.model.Jenkins.updateComputerList(Jenkins.java:1632)
        at jenkins.model.Nodes$2.run(Nodes.java:139)
        at hudson.model.Queue._withLock(Queue.java:1401)
        at hudson.model.Queue.withLock(Queue.java:1278)
        at jenkins.model.Nodes.addNode(Nodes.java:135)
        at jenkins.model.Jenkins.addNode(Jenkins.java:2155)
        at com.nirima.jenkins.plugins.docker.DockerCloud.robustlyAddNodeToJenkins(DockerCloud.java:445)
        at com.nirima.jenkins.plugins.docker.DockerCloud.access$000(DockerCloud.java:68)
        at com.nirima.jenkins.plugins.docker.DockerCloud$1.run(DockerCloud.java:381)
        at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
        at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
    java.io.EOFException: unexpected stream termination
        at hudson.remoting.ChannelBuilder.negotiate(ChannelBuilder.java:415)
        at hudson.remoting.ChannelBuilder.build(ChannelBuilder.java:360)
        at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:425)
        at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:392)
        at io.jenkins.docker.connector.DockerComputerAttachConnector$DockerAttachLauncher.launch(DockerComputerAttachConnector.java:319)
        at hudson.slaves.DelegatingComputerLauncher.launch(DelegatingComputerLauncher.java:64)
        at io.jenkins.docker.connector.DockerDelegatingComputerLauncher.launch(DockerDelegatingComputerLauncher.java:37)
        at hudson.slaves.SlaveComputer.lambda$_connect$0(SlaveComputer.java:294)
        at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
        at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:80)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
    

    【讨论】:

      【解决方案2】:

      我今天遇到了这个错误。

      问题是这个命令:

      ${JAVA_EXE}
      ${JVM_ARGS}
      -jar
      ${FS_DIR}/${JAR_NAME}
      -noReconnect
      -noKeepAlive
      -slaveLog
      ${FS_DIR}/agent.log
      

      这是 Jenkins master 执行的控制节点的命令。问题是 slaveLog 参数,现在是 agentLog。我在这个 Jenkins 问题线程 (Remote.jar is not working anymore because of changed parameter slave.jar->agent.jar) 中发现了它。

      您可以在 Docker 模板配置中定义入口点 CMD 并更改错误的参数来解决此问题:

      ${JAVA_EXE}
      ${JVM_ARGS}
      -jar
      ${FS_DIR}/${JAR_NAME}
      -noReconnect
      -noKeepAlive
      -agentLog
      ${FS_DIR}/agent.log
      

      在此之后,Jenkins 可以管理节点。让我知道是否也适合您。

      快乐建筑

      【讨论】:

      • 感谢您发布可能的解决方案!不幸的是,我认为这与我在这里遇到的问题不同。我之前曾使用这些设置进行过测试并收到相同的错误。 github.com/jenkinsci/docker-plugin/issues/820
      • 再次检查你的截图,可能是代理图像的原因...请尝试使用 jenkins/agent:jdk11 代理图像。在此之后,您还可以尝试附加到正在运行的容器中并执行命令'java -jar /home/jenkins/remoting-4.6.jar -noReconnect -noKeepAlive -slaveLog /home/jenkins/agent.log'。
      猜你喜欢
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 2014-11-07
      • 2019-04-02
      • 2021-09-03
      • 2019-01-12
      • 2020-10-26
      • 2020-10-19
      相关资源
      最近更新 更多