热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Docker构建上下文的目的是什么?》经验,为你挑选了1个好方法。

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

例如,给定这个目录结构

-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 /

因为那是事实.

如果构建过程压缩当前目录内容并将其发送到守护程序,那么它在哪里?为什么不将该内容用于图像?



1> Robert..:

TL; DR:"因为客户端和守护进程甚至可能无法在同一台机器上运行"

docker命令是Docker客户端,该dockerd服务可以直接在您的PC(Linux)或OSX或Windows下的Linux VM下运行.

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

从这里:

也许会提到这必须以这种方式发生,因为客户端和守护进程甚至可能不在同一台机器上运行,因此如果没有这个"上下文",守护进程机器将没有任何其他方式来获取ADD文件或除此以外


问:如果构建过程压缩当前目录内容并将其发送到守护程序,那么它在哪里?

docker守护程序接收压缩目录并动态处理它; 在那个时刻存储在哪里并不重要.

问:为什么不将该内容用于图像?

想一想:docker如何知道希望将每个文件/目录放在目标映像中的哪个位置?使用COPY/ADD指令,您可以控制每个指令的位置.你提到的情况只是一个简单的例子,你只有目录和目标.


"因为客户端和守护进程可能甚至不能在同一台机器上运行",即使情况并非如此,这似乎是一个不好的理由,尤其是在AIUI之后,它们大部分时间都在同一台机器上.Docker也可以只根据`COPY`命令发送文件.
推荐阅读
author-avatar
林秋伟左婷_894
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有