首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker构建上下文的目的是什么?

Docker构建上下文的目的是什么?
EN

Stack Overflow用户
提问于 2017-06-10 03:49:29
回答 1查看 14.7K关注 0票数 45

Docker构建上下文的目的是什么?我从文档中了解到,它是将整个内容发送到docker守护进程的“入口点”。但是,假设示例中提供了默认用例,当我们还必须显式地在Dockerfile中包含COPY或ADD指令以在生成的映像中实际包含当前目录的内容时,发送当前目录的全部内容有什么意义?如果上下文被发送到守护进程以包含在映像中,那么为什么我们需要执行这一额外步骤。为什么压缩后的上传/发送/复制任务默认不包含指定目录的内容?

例如,给定此目录结构

代码语言:javascript
复制
-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目录。但是,我必须包括

代码语言:javascript
复制
 ADD myproject /

事实就是这样。

如果构建过程压缩当前目录内容并将其发送到守护进程,它会去哪里?为什么不让这些内容在图像中可用呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-10 05:03:18

TL;DR:“因为客户端和守护进程甚至不能在同一台机器上运行”

docker命令是dockerd的docker客户端,该服务可以直接在PC ( Linux )上运行,也可以在OSX或Windows下的Linux虚拟机下运行。

Docker Q:

构建上下文的目的是什么?

来自here

最好也提到这必须以这种方式发生,因为客户端和守护进程甚至不能在同一台机器上运行,所以如果没有这个“上下文”,守护进程机器将没有任何其他方法来获取文件以进行添加或其他操作

Q:如果构建过程压缩当前目录内容并将其发送到守护进程,它会去哪里?

docker守护进程接收压缩后的目录并对其进行动态处理;此时将其存储在何处并不重要。

问:为什么它不让这些内容在图像中可用?

想想看: docker怎么知道你想要把每个文件/目录放在目标镜像中的什么位置?使用COPY/ADD指令,您可以控制将它们放入的位置。您提到的情况只是一个简单的示例,其中您只有一个目录和一个目标。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44465703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档