gpt4 book ai didi

Dockerfile 中的 docker volume 和 VOLUME

转载 作者:行者123 更新时间:2023-12-02 18:10:50 31 4
gpt4 key购买 nike

我对创建 docker volume create my-vol 之间的区别感到困惑。和 VOLUME ["/var/www"] .

我的理解是:

1) docker volume create my-vol在我们的机器上创建一个持久卷,每个容器都可以链接到 my-vol .

2) VOLUME ["/var/www"]在其容器内创建一个卷。

And when I create another container, I could link my-vol as follows: when running a container

$ docker run -d --name devtest --mount source=myvol2,target=/app nginx:latest

At that time, if I added VOLUME ["/var/www"] in my Dockerfile, all data of this docker file will be stored in both myvol2 and /var/www?

最佳答案

Dockerfile VOLUME命令说了两件事:

  • 如果运算符(operator)没有在特定的容器目录上显式挂载一个卷,那么无论如何都要在那里创建一个匿名卷。
  • 任何 Dockerfile 步骤都无法对该目录树进行进一步更改。

  • 作为运算符(operator),您可以使用 docker run -v 将卷(命名卷或主机目录)挂载到容器中。选项。无论是否有 VOLUME,您都可以将其挂载到容器中的任何目录上。在 Dockerfile 中为它声明。

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

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

    关于Dockerfile 中的 docker volume 和 VOLUME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53901320/

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