【问题标题】:How to start a docker container by jenkins?jenkins如何启动一个docker容器?
【发布时间】:2020-02-05 11:19:56
【问题描述】:

我正在尝试在我的 SCM 中使用 Jenkins 和 Dockerfile 启动一个容器。 Jenkins 使用我的 SCM 存储库中的 Dockerfile,并在具有 Dockerfile 的远程服务器上构建映像。这是使用“cloud bees docker build and publish plugin”完成的。

当我 ssh 到服务器时,我看到镜像已经使用我在 Jenkins 中定义的标签构建了。

# docker image ls

我无法为已构建的图像运行一个容器。如何获取 image-id 并启动容器?提供了很多插件,不应该很简单吗?

【问题讨论】:

  • 您阅读过 Jenkins 文档中的 Using Docker with Pipeline 吗?您可以使用sh "docker ..." 进行越野,但提供的管道构造应涵盖大多数常见情况。

标签: docker jenkins version-control dockerfile containers


【解决方案1】:

您的问题可能与如何引用最近创建的 docker 以便运行它有关吗?您能否提供您的管道摘录以及您如何尝试实现这一目标?

既然如此,有不同的解决方案,一种是在创建 Docker 的过程中指定一个标签,这样你就可以参考它来运行它。

在回复如何使用 image-ids 时,docker build 过程将返回它创建的 docker 的 image id。您可以捕获该 id,然后用于运行 docker。

【讨论】:

  • 我已尝试使用链接中显示的插件。唯一的事情是我看不到任何启动容器的选项。难道我做错了什么? github.com/jenkinsci/docker-build-publish-plugin#usage
  • 你能发布与运行新创建的docker相关的代码/步骤吗?如果您在创建过程中对其进行了标记,则使用 docker run <docker_tag> 的简单 Shell 步骤应该启动您的 docker,假设它存在于本地计算机上(您说它确实存在)
  • 步骤和我前两个cmet提供的链接完全一样。另外,你说的有效。但是我很困惑,为什么它需要一个单独的构建步骤来手动运行命令,它们不应该只是这里 gui 中的复选框 - github.com/jenkinsci/docker-build-publish-plugin#usage 吗?既然 jenkins docker 插件已经提供了这么多选项,为什么要跳过最重要的一个呢?
  • 我只能猜测为什么插件开发人员会在他们的开发中包含或不包含该复选框。由于该插件被称为Build and Publish,这似乎是他们关注的重点。如果您使用脚本化的管道,而不是使用 GUI 配置的管道,则将涵盖您的用例。现在,基于 GUI 的配置有时会受到更多限制。您可以尝试找到提供所需选项的其他插件。现在,如果额外的 bash 步骤有效,为什么不使用它呢?
【解决方案2】:

使用标准 docker run 命令在 VM 上自行启动容器。

使用类似watchtower 的软件在可用时使用更新版本重新启动容器

【讨论】:

    猜你喜欢
    • 2016-04-14
    • 1970-01-01
    • 2021-12-26
    • 2017-04-30
    • 2019-07-13
    • 2020-03-11
    • 1970-01-01
    • 2020-02-07
    • 2020-10-25
    相关资源
    最近更新 更多