构建docker映像时,通常使用docker build .
。
但是我发现您可以指定--pull
,所以整个命令看起来像docker build --pull .
我不确定--pull
的目的。码头工人official documentation说:“总是尝试拉取该图像的较新版本”,我不确定在这种情况下这意味着什么。
您使用docker build
来构建新图像,并最终将其发布到容器注册表的某个位置。您为什么要拉一些尚不存在的东西?
我希望可以在网络上轻松找到像“简单”这样的东西,但是似乎没有人有与此类似的问题。 google上唯一真正受到关注的是Dockers官方文档,我(如上所述)不理解。
感谢您的帮助!
答案 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