首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nextflow不拉“最新”码头形象

Nextflow不拉“最新”码头形象
EN

Stack Overflow用户
提问于 2020-12-14 10:34:52
回答 1查看 338关注 0票数 1

我在运行两个越南船民。一个VM用于运行nextflow,另一个VM上有一个Jenkins构建服务器。Jenkins负责构建新的Docker映像,并将新的Docker映像推送到我们的google容器注册中心。

我的nextflow.config文件如下所示:

代码语言:javascript
复制
process {
    withLabel: awesome_image {
        container = "eu.gcr.io/best-project-1234/coolest_os:latest"
    }
}

在使用Jenkins服务器构建了一个新映像之后,我运行了一个新的nextflow脚本,我注意到nextflow仍然在使用旧的映像。经过一些研究(https://stackoverflow.com/a/58539792/1820480)之后,我意识到这与我使用latest标记有关,而且由于nextflow VM上已经有一个名为latest的图像,所以nextflow使用该映像,而不需要检查注册表。

问:我如何确保在每次运行nextflow之前,它都会检查注册表中的更新图像?或者,是否有我可以在VM上运行的脚本/程序来检查注册表(而不是nextflow)?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-14 14:40:32

Nextflow只是使用docker run在容器中运行命令。如果指定了尚未提取的图像,docker run将首先执行一个docker pull来下载/本地化图像。要再次检查注册表中更新的图像,只需确保在运行Nextflow之前调用docker pull (针对每个映像)。如果您希望在每次生成进程时检查注册表中更新的图像,请参见下面的内容。

经过一些研究后,看起来最新的Docker cli (v20.10.0)现在有了一个标志来修改在运行容器时的拉行为:

代码语言:javascript
复制
--pull string   Pull image before running ("always"|"missing"|"never") (default "missing")

这很好,因为这意味着它现在应该可以在您的nextflow.config中通过。

代码语言:javascript
复制
docker {
    enabled = true
    runOptions = '--pull=always'
}

但是,这将导致对每个生成的进程执行一个docker pull的开销,并且取决于何时将新图像推送到您的注册表中,这可能意味着某些进程在执行工作流期间得到不同的容器。不过,如果您只需要“最新”容器,而不关心可重现性,这可能不是问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65287446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档