首页 > 解决方案 > 在 Amazon Linux 2 AMI 上使用 Jenkins Docker 从站

问题描述

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

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

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

USER root有趣的是,如果我在新的 DockerFile 中设置(在 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 UPGRADED Content-Type: application/nd.docker.原始流连接:升级升级:tcp Api-Version:1.40 Docker-Experimental:false Ostype:linux 服务器:Docker/19.03.13-ce (Linux)

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

重现的基本设置:

在此处输入图像描述

码头工人模板:

在此处输入图像描述

标签: linuxdockerjenkinsamazon-linux

解决方案


我今天遇到了这个错误。

问题是这个命令:

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

这是 Jenkins master 执行的控制节点的命令。问题是slaveLog参数,现在是agentLog。我在这个 Jenkins 问题线程中发现了它(Remote.jar 不再工作,因为更改了参数 slave.jar->agent.jar)。

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

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

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

快乐大厦


推荐阅读