在生成时将文件复制到映像。映像中有所有的文件,所以您可以很容易地进行部署。另一方面,在开发中每次都需要构建看起来不是一个好主意,因为构建需要开发人员运行一个命令来重建容器;此外,构建容器可能很耗时。
我知道使用Docker run-v
可以在容器中挂载一个主机文件夹,这样可以轻松地修改文件并观察容器中的应用程序对更改的反应。它在开发中看起来很棒,但我不确定如何以这种方式部署我的文件。
这两者之间的根本区别是add
使您添加的任何内容,无论是文件夹还是文件,实际上都是图像的一部分。任何使用您随后构建的映像的人都可以访问您add
的任何内容。即使您随后删除了它,这也是正确的,因为Docker是在层中工作的,add
层仍将作为图像的一部分存在。需要明确的是,您只能在构建时添加
某些内容,而不能在运行时添加
。
您希望使用add
的几个示例:
>
添加./requirements.txt/requirements.txt
后跟运行pip安装-r/requirements.txt
您希望将应用程序代码用作Dockerfile中的上下文,例如,如果您希望将应用程序目录设置为映像中的工作目录,并让从映像运行的容器中的默认命令实际运行您的应用程序,您可以执行以下操作:
workdir/usr/local/git/my_app
cmd python./main.py
另一方面,卷只是让从您的映像运行的容器能够访问正在运行容器的任何本地机器上的某个路径。不能使用DockerFile中volume
目录中的文件。卷目录中的任何内容在构建时都不可访问,但在运行时可以访问。