Docker构build上下文的目的是什么?
Docker构build上下文的目的是什么? 我从文档中了解到,这是将整个内容发送到docker守护程序的“入口”点。 但是,假设实例中提供了默认的用例,当我们还必须在Dockerfile中明确包含COPY或ADD指令时,发送当前目录的全部内容有什么意义呢?ACTUALLY包含生成的图像中当前目录的内容? 如果上下文发送到守护进程以包含在映像中,那么为什么我们需要做这个额外的步骤。 为什么压缩上传/发送/拷贝任务默认不包含指定目录的内容?
例如给定这个目录结构
-rw-r--r-- 1 me me 7 Jun 8 18:52 .dockerignore -rw-r--r-- 1 me me 1.1K Jun 9 12:42 Dockerfile drwxr-xr-x 13 me me 4.0K Jun 8 19:43 myproject
当我运行这个命令docker build -t user / myproject:2.3。
然后,我希望看到一个myproject目录在生成的图像中的某个地方。 但是,我必须包括
ADD myproject /
情况就是如此。
如果构build过程压缩当前目录内容并将其发送到守护程序,那么它会发生什么? 为什么它没有使内容可用于图像?
TL; DR:“因为客户端和守护进程甚至可能不在同一台机器上运行”
dockerd
命令是dockerd
客户端 ,它是可以直接在PC(linux)或OSX或Windows下的Linux VM下运行的服务。
问:Docker构build上下文的目的是什么?
从这里 :
如果没有这个“上下文”,守护进程将不会有任何其他的方式来获取ADD或者文件,这可能是好的,因为客户端和守护进程甚至可能不会在同一台机器上运行。除此以外
问:如果构build过程压缩当前目录内容并将其发送到守护进程,那么它会去哪里?
docker守护进程接收压缩的目录并对其进行处理; 在那个时刻存储在哪里并不重要。
问:为什么不让这些内容可用于图像?
想一想:docker怎么知道你想把每个文件/目录放在目标映像中? 通过COPY/ADD
指令,您可以控制每个指令的放置位置。 你提到的情况只是一个简单的例子,你只有目录,只有目标。
- 我如何cachingDocker多阶段构build层中的Maven依赖和插件?
- Docker GitHub自动构build参数
- 在Docker构build发布插件错误
- 在Docker中使用buildpack-deps构build,但依赖关系似乎没有安装?
- dockerbuild设没有networking,但docker运行
- 如果另一个服务状态是0(成功),Docker-compose运行服务
- dockerbuild设与Dockerfile,但图像没有名称或标记
- docker build错误检查上下文:'can not stat'\\?\ C:\ Users \ username \ AppData \ Local \ Application Data''
- docker工人自动构build标签expression式