当前位置: 首页 > 面试题库 >

Docker添加与VOLUME

常自强
2023-03-14
问题内容

我正在学习Docker,并且对何时何地使用ADDand 有疑问VOLUME。我认为这两个都是这样做的:

在构建时将文件复制到映像。该映像包含所有文件,因此您可以非常轻松地进行部署。另一方面,在开发中每次都需要构建似乎不是一个好主意,因为构建需要开发人员运行命令来重建容器。另外,建造容器可能很耗时。

体积

我了解docker run -v您可以使用容器文件夹安装主机文件夹,这样您就可以轻松地修改文件并观察容器中的应用对更改的反应。在开发中看起来很棒,但是我不确定如何以这种方式部署文件。


问题答案:

两者之间的根本区别在于,ADD无论您要添加的内容是文件夹还是文件,它实际上 都是图像的一部分
。任何使用您之后构建的图像的人都可以访问您所拥有的任何内容ADD。即使后来删除它,也是如此,因为Docker在层中工作并且该ADD层仍将作为映像的一部分存在。需要明确的是,您只能ADD在构建时进行操作,而不能ADD在运行时进行操作。

您想使用的一些例子ADD

  • 您有一个要引用并安装在Dockerfile中的requirements.txt文件中的一些需求。然后,您可以做:ADD ./requirements.txt /requirements.txt后面RUN pip install -r /requirements.txt
  • 您想将应用程序代码用作Dockerfile中的上下文,例如,如果要将应用程序目录设置为映像中的工作目录,并希望从映像中运行容器中的默认命令实际运行您的应用程序,可以做:

ADD ./ /usr/local/git/my_app

WORKDIR /usr/local/git/my_app

CMD python ./main.py

体积

另一方面,Volume只允许从映像运行的容器可以访问在其上运行容器的任何本地计算机上的某些路径。您
不能VOLUME在Dockerfile中使用目录中的文件。任何在你的卷目录将 不会在编译时访问的 ,但 会在运行时可以访问

您想使用的一些例子VOLUME

  • 在容器中运行的应用程序将登录/var/log/my_app。您希望这些日志在主机上可以访问,而在删除容器时不要删除。您可以通过以下方法创建挂载点:/var/log/my_app添加VOLUME /var/log/my_app到Dockerfile,然后使用docker run -v /host/log/dir/my_app:/var/log/my_app some_repo/some_image:some_tag
  • 您有一些本地设置文件,希望容器中的应用可以访问。也许这些设置文件在本地计算机,开发环境和生产环境上是不同的。特别是如果这些设置文件是秘密文件,则在这种情况下,您 绝对不希望它们出现在图像中 。在这种情况下,一个好的策略是添加VOLUME /etc/settings/my_app_settings到Dockerfile中,使用来运行您的容器docker run -v /host/settings/dir:/etc/settings/my_app_settings some_repo/some_image:some_tag,并确保/ host / settings / dir在您希望运行应用程序的所有环境中都存在。


 类似资料:
  • composer participant add命令将参与者的新实例添加到参与者库中。查看“ 添加参与者 ”任务,了解使用此命令或API的演练。 data选项必须包含一个代表要添加的参与者的序列化JSON串,并且必须用单引号包裹。 句法 composer participant add composer participant add [options] Participant options

  • 本文向大家介绍Docker 将容器添加到网络,包括了Docker 将容器添加到网络的使用技巧和注意事项,需要的朋友参考一下 示例 此命令将myAwesomeApp-1容器连接到app-backend网络。将容器添加到用户定义的网络时,嵌入式DNS解析器(它不是功能齐全的DNS服务器,并且不可导出)允许网络上的每个容器解析同一网络上的其他容器。此简单的DNS解析器在默认网桥bridge网络上不可用。

  • 问题内容: 在我有: 该文件以向我返回正确文件的方式存在,但是当我执行时,我得到了: 有人知道为什么以及如何正确进行吗? 问题答案: 您可以从父目录构建Dockerfile:

  • 我使用GitLab提供的默认模板创建了一个项目。它附带了一个预定义的Dockerfile,我想在该文件上添加一些额外的环境变量,以便在中使用。 到目前为止,我所做的是在DockerFile中添加ENV值,如下所示: 像这样设置我的: 如何将环境变量传递给Spring应用程序?在IDE内部调试时是否可以使用文件或类似文件,或者必须生成映像才能运行项目? PS:我不认为这是在部署到Docker时外部化

  • 在我的Dockerfile中,我得到了: 该文件以ls../的形式存在/myapp。war返回正确的文件,但当我执行sudo docker build-t myapp时 我有: 有人知道为什么以及如何正确操作吗?

  • 5. 文档添加与演示 在“讲课模式”中,讲师可提取云端的文档,或添加本地图片作为课件演示。 5.1. 文档提取 云端会自动保存 Web 端上课时使用的课堂文档,讲师使用 APP 时可从云端提取下载。进入菜单栏,选择文档库,提取对应的文档。 5.2. 上传图片 进入菜单栏,选择上传图片,讲师可添加手机本地图片作为演示文档。 5.3. 文档演示 在横屏模式下,讲师在文档演示中可预览、查看用户列表、使用