You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Docker云代理模板无法识别标签‘dockerhub-ubuntu’问题

问题原因及解决方案

核心原因

你的Docker代理模板无法工作,本质是两种Docker代理机制的实现逻辑不同:

  1. 你配置的Docker Agent模板依赖Docker Plugin,默认通过SSH连接容器来创建Jenkins代理节点,但ubuntu:latest镜像默认没有安装、启动SSH服务,Jenkins无法成功连接到创建的容器,导致该模板对应的dockerhub-ubuntu标签没有可用节点,任务调度时报错。
  2. 第二种Jenkinsfile使用的是Docker Pipeline插件的docker { image }语法,它不需要SSH,直接通过Docker API在容器内执行流水线步骤,因此能正常运行。

解决方案

方案1:修改代理模板的启动方式(推荐)

不需要依赖SSH,改用Docker Pipeline的方式启动代理:

  • 进入Jenkins的「Manage Jenkins -> Clouds -> Docker -> Docker Agent templates」配置页面
  • 找到「Launch method」,选择**「Launch agent via execution of command inside container」**
  • 在「Command to run」中填入:java -jar /usr/share/jenkins/agent.jar
  • 同时修改镜像为官方Jenkins代理镜像jenkins/agent:latest(该镜像自带Jenkins代理程序,无需额外配置)
  • 保存配置后,重新运行流水线即可识别dockerhub-ubuntu标签。

方案2:自定义带SSH服务的Ubuntu镜像

如果必须使用Ubuntu基础镜像,需要自定义镜像安装SSH服务:

  1. 创建Dockerfile:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y openssh-server openjdk-11-jre-headless
RUN useradd -m jenkins && echo "jenkins:jenkins" | chpasswd
RUN mkdir /var/run/sshd && chmod 0755 /var/run/sshd
# 允许密码登录(生产环境建议用密钥)
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
RUN sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
  1. 构建镜像:
docker build -t ubuntu-ssh:latest .
  1. 在Docker Agent模板中,将镜像改为ubuntu-ssh:latest,并在「Credentials」中配置Jenkins用户的登录密码(或密钥),保存后重新运行流水线。

方案3:检查Docker Cloud的基础配置

确保Docker Cloud能正常连接本地Docker服务:

  • 在Docker Cloud配置页面,填写Docker Host URI为unix:///var/run/docker.sock(本地部署场景)
  • 执行命令将Jenkins用户加入docker组,确保权限:
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins

内容的提问来源于stack exchange,提问作者Irbis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 01:51:21