【问题标题】:How can I save the Docker container that was used to perform a build in Gitlab CI?如何保存用于在 Gitlab CI 中执行构建的 Docker 容器?
【发布时间】:2016-04-24 17:23:05
【问题描述】:

我将 Gitlab CI 与使用 Docker 的运行器结合使用。在 Gitlab 的一个项目的 git repo 中,我放置了一个 .gitlab-ci.yml 文件。推送此文件会导致运行程序基于我提供的 Docker 映像创建一个 Docker 容器。然后它运行 yml 文件中规定的构建步骤。这在构建成功时效果很好。

但是,当构建失败时,我希望能够在用于运行此构建的 Docker 容器中找到原因。这可能吗?

'docker ps' 的输出显示容器在构建期间正在运行,但之后'docker ps -a' 的输出显示容器已被完全删除。有什么办法可以预防吗?

【问题讨论】:

    标签: gitlab-ci gitlab-ci-runner


    【解决方案1】:

    目前,开发人员不打算这样做。也许它是可能的,但如果有办法做到这一点,如果你在运行它之后想要容器,它比有用更复杂。我会说不。在我看来,这与使用 docker 进行测试的基本思想背道而驰。

    但我有一个解决方法的想法:

    假设您有一个项目,其中包含.gitlab-ci.yml 文件。无论安装了 docker,你都可以自己运行一个 docker 容器:

    docker run -it debian:latest

    并自己运行测试。我认为这种方式不实用,但它是一种可能的方式。 也许有帮助。

    【讨论】:

    • 我认为他想要保存容器的原因是为了更容易调试,如果构建过程出现问题,如果我们能以某种方式保留容器,那么修复它会非常简单
    【解决方案2】:

    很快这将通过网络终端 (11.3) 实现,这将在终端连接时使容器保持活动状态。 webterminal

    【讨论】:

    • 这听起来很有希望,但是目前这不起作用,从您发布的链接中:“构建脚本完成后,docker executor 不会继续运行。此时,终端将自动断开连接并且不会等待用户完成。请关注此问题以获取有关改进此行为的更新"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    相关资源
    最近更新 更多