我对创建docker volume create my-vol
和之间的区别感到困惑VOLUME ["/var/www"]
。
我的理解是:
1)docker volume create my-vol
在我们的计算机上创建一个持久卷,每个容器都可以链接到my-vol
。
2)VOLUME ["/var/www"]
在其容器内创建一个体积。
当我创建另一个容器时,我可以
my-vol
按以下方式链接:运行容器时$ docker run -d --name devtest --mount source=myvol2,target=/app nginx:latest
那时,如果我
VOLUME ["/var/www"]
在Dockerfile中添加了该Docker文件的所有数据,则它们都将存储在myvol2
和中/var/www
。
DockerfileVOLUME
命令说两件事:
如果操作员未在特定容器目录上显式装载卷,则无论如何都在其中创建一个匿名卷。
Dockerfile步骤将永远无法对该目录树进行进一步更改。
作为操作员,您可以使用该docker run -v
选项将卷(命名卷或主机目录)安装到容器中。您可以将其挂载到容器中的任何目录上,而不管VOLUME
Dockerfile中是否声明了它。
(由于docker run -v
无论是否声明a都可以使用VOLUME
,并且它具有令人困惑的副作用,因此我通常会避免VOLUME
在Dockerfiles中声明。)
就像在普通Linux中一样,在任何给定目录上只能(有用地)安装一件事。使用您描述的设置,数据将存储在myvol2
您创建和安装的数据中,并且/var/www
在容器中可见,但是数据实际上仅存储在一个位置。如果删除并重新创建没有卷挂载的容器,则数据将不再存在。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句