![](/img/trans.png)
[英]Docker commands succeed on running container, but fail on Dockerfile
[英]Running commands inside docker container created using Dockerfile in Jenkinsfile
我創建了一個Jenkins管道文件並創建了一個Jenkinsfile。 在Jenkinsfile內部,我使用了Dockerfile代理,然后運行一些步驟。 這些步驟應該在docker內部運行,但它們在主機上運行。 她的代碼。
#!/usr/bin/env groovy
@Library(['abc-jenkins','xyz-jenkins-library']) _
pipeline {
agent {
dockerfile{
dir 'TEST'
filename 'dockerfile'
label 'docker'
}
}
stages {
stage('Build Stage') {
steps {
echo 'testing stage running'
sh "ls"
}
}
}
}
您可以使用-> docker.image('image')。inside {..}
stage('BuildInside') {
docker.image('ubuntu1804').withRun('-d=true -p 8888:8080') {c ->
docker.image('ubuntu1804').inside{
/* Do something here inside container */
sh "ls"
}
}
}
您根據ls
的輸出誤解了它。
對於Jenkins管道docker DSL,它將把jenkins作業工作區安裝到docker容器,並將docker WORKDIR
更改為jenkins作業工作區。
因此,當您在容器內執行ls
時,它將在jenkins作業工作區下打印文件和文件。
您可以嘗試在主機中不存在的其他cmd或ls
其他文件夾批准它確實在容器而不是主機中執行。
您必須在階段括號內編寫代理創建階段:
stages {
stage('Build Stage') {
agent {
dockerfile{
dir 'TEST'
filename 'dockerfile'
label 'docker'
}
steps {
echo 'testing stage running'
sh "ls"
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.