docker - 是否可以不删除docker jenkins插件启动的容器?

标签 docker jenkins

我有一个以以下开头的管道:

pipeline {
    agent {
        docker {
            image 'ubuntu'
        }
    }

在构建结束时,无论成功还是失败,管道都会以以下内容结束:

$ docker stop --time=1 922fc93c1ff65758270cd2ac9dbdc30549ea8acb000ce5982dfa1fc4a9ed79a0
$ docker rm -f 922fc93c1ff65758270cd2ac9dbdc30549ea8acb000ce5982dfa1fc4a9ed79a0

有没有办法禁用rm -f 步骤。

这是为了调试目的。目前我把 sleep 放在一个很不方便的地方。

最佳答案

感谢@davidxxx 让我找到了解决方案。

他建议的答案不需要共享 docker 套接字。由于我想要一个调试解决方案,所以我想出的方案很好,因为它不会投入生产。 他提供的内容更详细,但更安全。 所以这实际上可以归结为您所需要的。

我的解决方案: 在管道中,与新创建的容器共享套接字

pipeline {
    agent {
        docker {
            image 'ubuntu'
            args '-v /var/run/docker.sock:/var/run/docker.sock'
        }
    }

然后,在作业中,从您正在运行的镜像中创建一个新镜像:

docker commit $(basename $(cat /proc/1/cpuset)) foo 

$(basename $(cat/proc/1/cpuset)) 获取当前容器的哈希值 here

foo 是新图像的名称

关于docker - 是否可以不删除docker jenkins插件启动的容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60419020/

相关文章:

git - 找不到远程 ref HEAD(使用 Jenkins 和 Maven 发布工件时)

docker - 通过 Ansible 执行 docker-compose pull

node.js - 为什么 NodeJS 集群与 Docker 相比,Einhorn 又如何?

apache - Docker容器不再允许Web访问

jenkins - 通过 Jenkinsfile 的 Jabber 通知

jenkins - 将参数中的变量插入到 Jenkins 的参数化构建中

docker - 无法在docker-compose中提供网络名称

linux - yum 依赖解析在 docker build 和 docker run 中表现不同

python-3.x - 为什么我的 jenkins 服务器上不同用户的 sqlite 版本不同?

java - 在测试和生产环境中使用 Maven 和 Jenkins 部署到 tomcat