詹金斯:无法在Docker容器中运行命令

时间:2018-10-24 05:31:47

标签: docker jenkins jenkins-pipeline

我试图构建一个简单的Docker映像,然后使用Jenkins Pipeline在其中运行命令。我很困惑,因为我似乎是在构建服务器上而不是在Docker容器内执行命令。当我通过运行以下命令在内置容器中运行“ pwd”时:

node ('docker2') {
    docker.withRegistry('https://my-registry.com', 'my-creds') {

        stage ('Checkout SCM') {
            checkout scm
        }

        // Build Docker image from Dockerfile
        stage ('Build Docker Image') {
            def myImage = docker.build("my-image:${env.BUILD_ID}")

            myImage.inside {
                sh 'pwd'
            }
        }
    }
}

它返回“ / home / build / workspace / Docker-Build-And-Push”,这似乎是我用来构建容器的工作目录,而不是容器本身内的目录。

此外,当我尝试在容器中运行“ mkdir test”时,它在构建服务器(而不是容器)中创建了一个测试目录。但是,当我运行“主机名”时,它不会返回构建服务器的主机名,而是返回一个随机的数字字符串,因此这似乎来自我的容器...

我的Dockerfile非常简单,仅包含“ FROM alpine:latest”。

在我看来,我的命令应该在容器内而不是在构建服务器上运行。我究竟做错了什么?

1 个答案:

答案 0 :(得分:0)

Jenkins使用-v parameter将工作区安装在docker容器中。因此,您会看到构建服务器的目录结构,如果创建了文件,则该文件实际上是在工作空间中创建的。

您应该能够在构建的日志中看到确切的docker命令。

相关问题