.dockerignore工作的文件是什么?

大易归*_*易归真 9 docker

我真的不明白它是如何.dockerignore运作的.是否打算像以下一样使用:

  • 首先,我在其中添加一些内容,例如 *.md
  • 然后我把它.dockerignore放入容器中.
  • 之后我运行并进入容器.
  • 我创建了一个名为的新文件,test.md并将此容器提交给新图像.
  • 新图像将忽略此文件,因此它不会在新容器中.

Reg*_*gan 9

在解释.dockerignore文件的使用之前,我们必须花一点时间来了解它的用途docker build.

Docker构建.构建图像时会发生什么?

使用docker build命令从Dockerfile构建映像时,守护程序将创建上下文.该上下文包含您执行命令的目录中的所有内容.

.dockerignore做什么以及为什么要使用它?

.dockerignore文件允许您从上下文中排除文件,如.gitignore文件允许您从git存储库中排除文件.

它通过从构建中未使用的上下文大文件或存储库中排除,有助于使构建更快更轻.

  • 我想知道为什么该上下文包含目录中的所有内容。我没有在通过从 dockerfile 构建的映像运行的容器中看到这些文件。 (3认同)
  • 如果 Dockerfile 不需要外部任何内容,那么 .dockerignore 可以只包含 `*` 吗? (2认同)

Dal*_*ung 5

docker build有一个步骤,它会tar启动CONTEXT目录并将其发送到docker daemon. 这是因为daemonclient可能不存在于同一台服务器上。

tar与网络发送就是为什么不用的文件可以减缓构建。即使在daemon本地运行,也会发生这些情况。


Tho*_*eil 1

然后我把这个 .dockerignore 放入容器中。

不,不要这样做。该.dockerignore文件应该与您的文件位于同一目录中Dockerfile,并且旨在通过在构建时docker build排除一些不会用于构建 docker 映像的文件来加快命令速度。