Jenkins管道 - 无法连接到Docker守护程序

时间:2017-11-24 15:13:49

标签: maven docker jenkins windows-10 jenkins-pipeline

我正在按照本教程在dockers中使用jenkins构建一个hello-world maven java应用程序: https://jenkins.io/doc/tutorials/building-a-java-app-with-maven/#fork-and-clone-the-sample-repository-on-github

这是我的应用程序(只是教程中的代码):simple-java-maven-app

我在Pipeline的选项(存储库URL)中使用了远程仓库(Github)而不是本地仓库(或主机仓库)。我将Jenkinsfile推送到repo,然后使用Pipeline构建hello-world应用程序。

// Jenkinsfile for Pipeline
pipeline {
    agent {
        docker {
            image 'maven:3-alpine' 
            args '-v /root/.m2:/root/.m2' 
        }
    }
    stages {
        stage('Build') { 
            steps {
                sh 'mvn -B -DskipTests clean package' 
            }
        }
    }
}

我在下面找到了error,但找不到任何解决方案。我使用的是Windows 10。

docker pull maven:3-alpine
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

谢谢大家。

1 个答案:

答案 0 :(得分:4)

您正在使用Docker(DinD)中的Docker,这不是推荐的CI方法。您应该将 Host的Docker Daemon Socket 作为卷安装到Jenkins容器中,如:

docker container run -v /var/run/docker.sock:/var/run/docker.sock ...

所以你可以使用图像&主机上的容器而不是Jenkins容器中的容器。 Click Here了解详情。