在Jenkins停止Docker容器的最佳方法

我有一个build立新的Docker镜像的CI服务器(jenkins)。 现在我想在构build成功时运行一个新的Docker容器。 但是为此我必须停止以前运行的容器。

什么是最好的方式来执行此操作? localhost:5000/test/myapp:"${BUILD_ID}是我的新图像的名称,所以我使用build-id作为标记。

 docker stop localhost:5000/dbm/my-php-app:${BUILD_ID-1} 

但这不是一个正确的解决scheme,因为当一个构build失败时,这将是错误的。

 Build 1: succes -> run container 1 Build 2: failed -> run container 1 Build 3: succes -> stop container (3-1) =2 --> wrong (isn't running) 

什么可能是一个解决scheme? build议我必须改变标签的想法也是受欢迎的

docker stop命令将泊坞窗容器名称作为参数,而不是泊坞窗图像ID

运行时你必须命名你的容器:

 # build the new image docker build -t localhost:5000/test/myapp:"${BUILD_ID}" . # remove the existing container docker rm -f myjob && echo "container myjob removed" || echo "container myjob does not exist" # create and run a new container docker run -d --name myjob localhost:5000/test/myapp:"${BUILD_ID}" 

在这个例子中,只需将myjobreplace为更适合的名称即可。

感谢@Thomasleveil我在我的问题上find了答案:

 # build the new image docker build -t localhost:5000/test/myapp:"${BUILD_ID}" . # remove old container SUCCESS_BUILD=`wget -qO- http://jenkins_url:8080/job/jobname/lastSuccessfulBuild/buildNumber` docker rm -f "${SUCCESS_BUILD}" && echo "container ${SUCCESS_BUILD} removed" || echo "container ${SUCCESS_BUILD} does not exist" # run new container docker run -d -p 80:80 --name "${BUILD_ID}" localhost:5000/test/myapp:${version}