gpt4 book ai didi

Docker ADD 与 VOLUME

转载 作者:IT老高 更新时间:2023-10-28 12:33:17 25 4
gpt4 key购买 nike

我正在学习 Docker,我对何时何地使用 ADDVOLUME 有疑问。以下是我认为这两种方法的作用:

添加

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

音量

我知道使用 docker run -v 您可以在容器中挂载一个主机文件夹,这样您就可以轻松地修改文件并观察容器中的应用程序对更改的 react 。它在开发中看起来很棒,但我不确定如何以这种方式部署我的文件。

最佳答案

添加

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

您希望使用 ADD 的几个示例:

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

    添加.//usr/local/git/my_app

    WORKDIR/usr/local/git/my_app

    CMD python ./main.py

音量

另一方面,Volume 只是让从您的镜像运行的容器可以访问运行该容器的任何本地计算机上的某个路径。您不能使用 Dockerfile 中 VOLUME 目录中的文件。您的卷目录中的任何内容都将在构建时无法访问,但将在运行时访问

您希望使用 VOLUME 的几个例子:

  • 在您的容器中运行的应用会在 /var/log/my_app 中生成日志。您希望这些日志可以在主机上访问,并且在容器被移除时不被删除。您可以通过将 VOLUME/var/log/my_app 添加到 Dockerfile 然后在 /var/log/my_app 处创建挂载点来执行此操作,然后使用 运行容器>docker run -v/host/log/dir/my_app:/var/log/my_app some_repo/some_image:some_tag
  • 您希望容器中的应用可以访问一些本地设置文件。也许这些设置文件在您的本地机器上与开发与生产上有所不同。特别是如果这些设置文件是 secret 的,在这种情况下,您绝对不希望它们出现在您的图像中。在这种情况下,一个好的策略是将 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 存在于您希望应用运行的所有环境中。

关于Docker ADD 与 VOLUME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27735706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com