Dockerfile中的Docker卷和VOLUME

PPShein

我对创建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命令说两件事:

  1. 如果操作员未在特定容器目录上显式装载卷,则无论如何都在其中创建一个匿名卷。

  2. Dockerfile步骤将永远无法对该目录树进行进一步更改。

作为操作员,您可以使用该docker run -v选项将卷(命名卷或主机目录)安装到容器中您可以将其挂载到容器中的任何目录上,而不管VOLUMEDockerfile中是否声明了它。

(由于docker run -v无论是否声明a都可以使用VOLUME,并且它具有令人困惑的副作用,因此我通常会避免VOLUME在Dockerfiles中声明。)

就像在普通Linux中一样,在任何给定目录上只能(有用地)安装一件事。使用您描述的设置,数据将存储在myvol2您创建和安装的数据中,并且/var/www在容器中可见,但是数据实际上仅存储在一个位置。如果删除并重新创建没有卷挂载的容器,则数据将不再存在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章