【发布时间】:2022-01-25 07:32:47
【问题描述】:
我已经在一个 groovy 脚本中设置了 jenkins 管道作业....
我正在尝试构建在远程服务器上运行 docker 命令的 jenkins 作业。 我的詹金斯预计会连接到远程服务器并执行
docker run -d -p 60:80 <image name>
为此,我在 jenkins 管道作业中使用了以下 groovy 脚本
stage ('Deploy on App Server')
{
def dockrun = 'docker run -d -p 60:80 <image name>'
sshagent(['dev-servr-crdntls'])
{
sh "ssh -o StrictHostKeyChecking=no ubuntu@xx.xxx.xx.xx ${dockrun}"
}
}
此脚本运行良好。 Jenkins 正在连接到远程服务器并运行 docker 命令,并且应用程序正在端口 60 上运行。
但是,由于这是在 CICD 的 jenkins 管道中,下次运行构建作业时会失败,因为端口 60 已经分配。 .
我想在运行 docker run -d -p ......命令之前关闭 60 端口。大家有什么建议
【问题讨论】:
-
我能够在终端级别杀死在端口 60 上运行的特定容器,但这在 jenkins 管道中不起作用 $ docker rm -f
docker ps | grep 60 | awk '{print $1}' -
我通常在终端里做
docker stop [container name or id],你试过吗? -
嗨@NaphatAmundsen 谢谢你的回复。对于 docker stop 命令,我们必须在我无法执行的自动化脚本中传递容器 ID
-
您可以使用
docker run --name选项为容器指定一个已知名称,并在docker stop和docker rm命令(以及其他地方)中使用该名称,而无需查找容器ID。
标签: docker containers kill