“ docker build --pull”的目的是什么?

时间:2019-10-21 14:32:45

标签: docker

构建docker映像时,通常使用docker build .

但是我发现您可以指定--pull,所以整个命令看起来像docker build --pull .

我不确定--pull的目的。码头工人official documentation说:“总是尝试拉取该图像的较新版本”,我不确定在这种情况下这意味着什么。

您使用docker build来构建新图像,并最终将其发布到容器注册表的某个位置。您为什么要拉一些尚不存在的东西?

我希望可以在网络上轻松找到像“简单”这样的东西,但是似乎没有人有与此类似的问题。 google上唯一真正受到关注的是Dockers官方文档,我(如上所述)不理解。

感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

它将提取任何基础图像的最新版本,而不是重复使用您已经在本地标记的任何内容

例如基于移动标签(例如ubuntu:bionic)拍摄图像。上游会进行更改并定期重建它,但是您可能在本地拥有一个月的映像。码头工人会很乐意根据旧基地建造。 --pull会产生副作用,因此您可以根据最新的基本图片进行构建

通常最好的方法是尽快使用它来获取上游安全修复程序(而不是使用过时的,可能存在漏洞的映像)。尽管您必须权衡重大更改(如果您使用不可变标签,则不会有什么不同)

答案 1 :(得分:1)

简单的答案。 docker build用于从本地dockerfile构建。 docker pull用于从docker hub提取。如果您使用没有docker文件的docker build,则会引发错误。

当您指定--pull:latest时,docker将尝试下载最新版本(如果有)

基本上,如果添加--pull,它将在每次运行时尝试拉出最新版本。

答案 2 :(得分:0)

Docker允许将--pull标志传递给docker build,例如docker build --pull -t myimage。建议使用这种方法,以确保尽管本地提供了可用的版本,该构建仍始终使用最新的容器映像。不过,还有一点要提及

要确保完全重建您的构建,包括检查基础映像是否有更新,请在构建时使用以下选项:

-无缓存-这将强制重建已经可用的层

完整的命令将如下所示:

docker build --pull --no-cache --tag myimage:version。

相同的选项可用于docker-compose:

docker-compose build --no-cache --pull