docker不能忽视的.dockerignore用法
.dockerignore
的文章或许对老司机来说是一个过时的话题,但是我已经写了很多关于dockers使用的文章,并且我在讨论群组里面发现有人对此.dockerignore
并不清楚,在这种情况下,我有必要重新复述一次。查看本章节,你将了解.dockerignore
的使用和注意事项。祝你愉快
Docker镜像可以和普通应用一样运行在云服务上,为什么还要优化它们呢?事实证明使用.dockerignore有很多好处。它可以帮助减少Docker镜像大小,加速docker build
并避免意外的秘密曝光(请继续阅读以了解我的意思)。要理解.dockerignore为何如此有效,你必须了解构建上下文。
什么是build context?
首先,Docker是一个客户端 - 服务器应用程序,它由Docker客户端和Docker服务器(也称为Docker 守护程序)组成。Docker客户端命令行工具与Docker服务器通信并要求它执行操作。其中一个是Docker build:构建一个新的Docker镜像。Docker可以在与客户端,远程计算机或虚拟机上运行,也可以是本地,远程甚至在某些云IaaS上运行。
有哪些是重要的?
为了创建一个新的Docker镜像,Docker服务器需要访问文件并从中创建Docker镜像。因此,你需要以某种方式将这些文件发送到Docker服务器。这些文件是Docker 构建不可缺少的部分。Docker客户端将所有构建上下文文件打包到tar
存档中,并将此存档上传到Docker服务器。默认情况下,客户端将获取当前工作目录中的所有文件(和文件夹),并将它们用作构建上下文。它还可以接受已创建的tar
存档或git
存储库。在git
存储库的情况下 ,客户端将克隆到临时文件夹中,并从中创建构建上下文存档。
Sending build context to Docker daemon 4.608kB
Step 1/5 : FROM alpine:3.9
这应该让事情变得清晰。实际上,每次运行docker build
命令时,Docker客户端都会创建一个新的构建上下文存档并将其发送到Docker服务器。因此,总是这样:创建存档,存储和网络流量以及延迟时间所需的时间。
提示:如果你在Docker镜像中不需要它们,则不将文件添加到构建上下文中。