【问题标题】:Running Jenkins on docker container.Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?在 docker 容器上运行 Jenkins。无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。 docker 守护进程是否正在运行?
【发布时间】:2020-12-13 10:09:35
【问题描述】:

我在 docker 容器中运行 jenkins (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 checkout 和 Mvn 包但不能构建 docker 镜像

有什么帮助吗?谢谢

【问题讨论】:

标签: docker jenkins continuous-integration jenkins-pipeline continuous-deployment


【解决方案1】:

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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    相关资源
    最近更新 更多