You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins中运行带有ENTRYPOINT的Docker镜像?

在Jenkins Pipeline中直接运行Docker镜像(对应docker run)

我完全懂你的需求——你要的是直接触发镜像自带的ENTRYPOINT来启动容器,就像在命令行敲docker run foo那样,而不是用docker.image('foo').inside()那种在容器内部执行自定义脚本的方式。

其实Jenkins的Docker Pipeline插件已经提供了对应的方法,具体操作如下:

基础用法:直接运行镜像

在Jenkinsfile里,对应命令行docker run foo的操作,你可以使用docker.image('foo').run()方法。这个调用会直接启动容器,让镜像的ENTRYPOINT(如果没有ENTRYPOINT则用CMD)执行,和命令行的效果完全一致。

示例代码片段:

script {
    // 先构建镜像,等价于docker build -t my-app .
    docker.build("my-app")
    // 直接运行镜像,等价于docker run my-app
    docker.image('my-app').run()
}

带参数运行(端口映射、环境变量等)

如果需要像docker run -p 8080:80 -e ENV=prod foo那样添加额外参数,只需要把参数字符串传给run()方法即可:

docker.image('my-app').run('-p 8080:80 -e APP_ENV=production')

后台运行容器(对应docker run -d)

如果希望容器在后台启动,不阻塞后续的Pipeline步骤,只需要在参数里加上-d:

docker.image('my-app').run('-d')

和inside()的区别再强调一下

  • docker.image('foo').inside():让Jenkins的后续Pipeline步骤在容器内部执行,相当于临时进入容器做一些操作(比如编译、测试),操作完成后容器会被清理。
  • docker.image('foo').run():直接启动容器,让镜像的ENTRYPOINT/CMD完整运行,和你手动在命令行执行docker run的行为完全一致,容器会按照镜像定义的逻辑运行(直到ENTRYPOINT进程结束,或者你手动停止)。

内容的提问来源于stack exchange,提问作者ewok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:38:27