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

EKS部署的Jenkins构建Docker镜像报错docker:not found如何解决

报错原因

你遇到的docker: not found报错由两个核心因素导致:

  • 运行Pipeline任务的Jenkins Agent(EKS集群中启动的Pod)使用的基础镜像未预装Docker客户端
  • 新版EKS集群默认使用containerd作为容器运行时,工作节点本身没有Docker守护进程,就算安装了Docker客户端也无法直接执行构建、推送操作
解决方案

方案1:Docker客户端+挂载宿主机套接字(仅测试环境可用)

如果你的EKS工作节点仍保留了Docker运行时,可以直接修改Jenkinsfile,指定带Docker客户端的Agent镜像,同时挂载节点的Docker套接字:

pipeline {
  agent {
    kubernetes {
      image 'docker:latest'
      volumeMounts {
        mountPath '/var/run/docker.sock'
        volumeName 'docker-sock'
      }
      volumes {
        hostPathVolume {
          hostPath '/var/run/docker.sock'
          volumeName 'docker-sock'
        }
      }
    }
  }
  stages {
    // 保留原有构建、测试、部署阶段的代码即可
  }
}

该方案权限开放度高,存在容器逃逸风险,仅适合测试验证使用。

方案2:Kaniko构建镜像(生产环境推荐)

Kaniko无需依赖Docker守护进程,完全在用户空间完成镜像构建和推送,是K8s环境的首选方案,操作如下:

  1. 为Jenkins服务账户绑定可推送ECR镜像的IAM权限
  2. 修改Jenkinsfile使用Kaniko作为构建Agent:
pipeline {
  agent any
  stages {
    stage("build and push"){
      agent {
        kubernetes {
          image 'gcr.io/kaniko-project/executor:v1.23.0-debug'
          serviceAccount 'jenkins-ecr-sa' // 替换为你绑定了ECR权限的服务账户名
        }
      }
      steps {
        sh '''
        /kaniko/executor \
          --context `pwd` \
          --dockerfile `pwd`/Dockerfile \
          --destination dkr.ecr.eu-north-1.amazonaws.com/test:latest
        '''
      }
    }
    stage('test'){
      steps {
        echo('testing app')
      }
    }
    stage('deploy'){
      steps {
        echo('deploying app')
      }
    }
  }
}
自定义Agent镜像安装Docker方法

如果确实需要在Jenkins Agent中使用Docker命令,可以自行构建包含Docker客户端的自定义Agent镜像,参考Dockerfile如下:

# 替换为你实际使用的Jenkins Agent基础镜像
FROM jenkins/inbound-agent:latest
USER root
RUN apt-get update && apt-get install -y ca-certificates curl gnupg lsb-release && \
    curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
    apt-get update && apt-get install -y docker-ce-cli
USER jenkins

构建完成后将镜像推送到私有镜像仓库,在Pipeline中指定该镜像作为Agent即可使用Docker命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:57:04