运行 docker container.Cannot 上的 Jenkins 连接到位于 unix:///var/run/docker.sock 的 Docker 守护进程。 docker 守护进程是 运行 吗?

Running Jenkins on docker container.Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

我是 运行 jenkins inside docker container(jenkins/jenkins:lts) 作为基础镜像。

我在 jenkins 中创建了一个管道,我在其中添加了以下内容

node{
    stage('SCM checkout')
    {
        git url: 'https://github.com/THIYAGU22/javaapp'
    }
    stage('Mvn Package')
    {
        def mvnHome = tool name: 'maven-3', type: 'maven'
        def mvnCMD = "${mvnHome}/bin/mvn"
        sh script: "${mvnCMD} clean package"
    }
    stage('Build Docker Image')
    {
        tool name: 'docker', type: 'dockerTool'
        def dockerHome = tool 'docker'
        env.PATH = "${dockerHome}/bin:${env.PATH}"
        sh 'docker build -t imthiyagu/java-app-2.0.0 .'
    }
}

构建后它可以处理 SCM 检出和 Mvn 包但不能构建 docker 图像

有什么帮助吗?谢谢

docker 命令需要一个 Docker 套接字进行通信。它查找的默认套接字是 /var/run/docker.sock。您有两种选择来提供 Docker 套接字:

  1. 运行 带有 --privileged -v /var/run/docker.sock:/var/run/docker.sock 个参数的 Jenkins 图像。这会将主机的 Docker 套接字安装到 Jenkins 映像中,然后可以由 Docker 使用。请注意,使用 --privilegeda security risk.

  2. 通过 HTTPS 公开主机的 Docker 套接字:https://docs.docker.com/engine/security/https/。然后设置DOCKER_HOST环境变量指向tcp://YOURHOST:PORT,其中端口为2375或2376.