gpt4 book ai didi

docker - Jenkins管道Docker-容器未运行

转载 作者:行者123 更新时间:2023-12-02 17:31:15 28 4
gpt4 key购买 nike

我让Jenkins在EC2实例上运行。我在对等VPC中配置了EC2插件,当作业标记为“support_ubuntu_docker”时,它将启动Jenkins Slave,并预安装了Docker。

我能够按照示例操作,并让我的工作连接到在Slave上运行的本地docker,并在容器内运行命令。

工作:https://pastebin.com/UANvjhnA

pipeline {
agent {
docker {
image 'node:7-alpine'
label 'support_ubuntu_docker'
}
}
stages {
stage('Test') {
steps {
sh 'node --version'
}
}
}
}

无法正常工作 https://pastebin.com/MsSZaPha
pipeline {
agent {
docker {
image 'hashicorp/terraform:light'
label 'support_ubuntu_docker'
}
}
stages {
stage('Test') {
steps {
sh 'terraform --version'
}
}
}
}

我尝试使用ansible/ansible:default图像以及我自己创建的图像。
FROM alpine:3.7
RUN apk add --no-cache terraform
RUN apk add --no-cache ansible
ENTRYPOINT ["/bin/ash"]

此图像在本地运行。
[jenkins_test] docker exec -it 3843653932c8 ash                                                                                                                                                                                                                                                   10:56:42  ☁  master ☂ ⚡ ✭
/ # terraform --version
Terraform v0.11.0

/ # ansible --version
ansible 2.4.6.0
config file = None
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.15 (default, Aug 22 2018, 13:24:18) [GCC 6.4.0]
/ #

我真的只是想能够克隆我的terraform git repo,并使用容器中的terraform运行我的init/plan/applies。

对于所有这些错误即时消息是。
java.io.IOException: Failed to run top 'c9dfeda21b718b9df1035500adf2ef80c5c3807cf63e724317d620d4bcaa14b3'. Error: Error response from daemon: Container c9dfeda21b718b9df1035500adf2ef80c5c3807cf63e724317d620d4bcaa14b3 is not running

最佳答案

这个问题确实应该是一个Docker问题。 node:7-alpinehashicorp/terraform:light有什么区别?
hashicorp/terraform:light有一个ENTRYPOINT条目,指向/bin/terraform
基本上,这意味着您可以通过以下方式运行它:docker run hashicorp/terraform:light --version它会立即退出,即它不是交互式的。
因此,如果要在该Docker容器中使用交互式 shell ,则必须重写ENTRYPOINT指向 shell (例如/bin/bash),并告诉Docker交互式运行:

pipeline {
agent {
docker {
image 'hashicorp/terraform:light'
args '-it --entrypoint=/bin/bash'
label 'support_ubuntu_docker'
}
}
stages {
stage('Test') {
steps {
sh 'terraform --version'
}
}
}
}

关于docker - Jenkins管道Docker-容器未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52558150/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com