簡體   English   中英

詹金斯:無法在Docker容器中運行命令

[英]Jenkins: Can't run commands inside Docker container

我正在嘗試構建一個簡單的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”。

在我看來,我的命令應該在我的容器中而不是在我的構建服務器上運行。 我究竟做錯了什么?

Jenkins使用-v參數將工作區安裝在docker容器中。 因此,您將看到構建服務器的目錄結構,並且如果您創建文件,則該文件實際上是在工作空間中創建的。

您應該能夠在生成的日志中看到確切的docker命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM