在Jenkins中,我试图删除所有正在运行的容器,并删除我的网络(称为我的网络),但前提是它们存在。
在其中一个步骤中:
stage('test1') {
steps {
sh 'docker network create my-net'
sh 'docker build -t myimage1 .'
sh 'docker create --name mybackend--network my-net myimage1'
sh 'docker start mybackend'
}
}
在所有阶段之前,我提出:
stage('Remove containers and network') {
steps {
sh 'docker stop $(docker ps -a -q)'
sh 'docker rm $(docker ps -a -q)'
sh 'docker network rm my-net'
}
}
这应该会删除所有正在运行的容器(因为我不是只有一个容器在运行),并且
我的网
网络
我用这个来删除所有正在运行的容器,因为我不知道如何只删除名称为的容器
mybackend
,但前提是它正在运行。
网络也有问题,如果它没有运行,它会在这条线上失败:
sh 'docker network rm my-net'
我也试着把这个删除步骤放在我所有步骤的最后,但在这种情况下,如果脚本在某个地方失败,它就不会在最后到达删除步骤。
所以问题是,如果我想把删除作为第一步,有没有办法:
-
停止并删除名为的容器
mybackend
仅当它正在运行时(也删除另一个相同的方法,例如mybackend2)
-
去除
我的网
网络,但前提是它存在
我调查时发现:
docker system prune
这应该清理所有未使用的容器、网络和图像。但在我的情况下,网络或容器可能正在运行,所以它不是未使用的,所以我唯一想要的就是删除我的容器和网络,如果它们正在运行的话。