我试图加深对Docker容量的理解,并且很难找出以下差异/用例:

  • docker volume create命令
  • docker run -v /path:/host_path
  • VOLUME文件
  • 中的Dockerfile条目

    我特别不理解如果将VOLUME条目与-v标志结合使用会发生什么。

    最佳答案

    卷是存储在/var/lib/docker/volumes/...中的持久数据

  • 您可以在Dockerfile中声明它,这意味着每次从镜像启动容器时,即使没有任何-v选项,也会创建该卷(空)。
  • 您可以在运行时 docker run -v [host-dir:]container-dir 上声明它。
    结合两者(VOLUME + docker run -v)意味着您可以将主机文件夹的内容挂载到/var/lib/docker/volumes/...
  • 中的容器所保留的卷中
  • docker volume create无需定义Dockerfile,构建镜像和运行容器即可创建卷。它用于快速允许其他容器安装该体积。

  • 如果您已在卷中保留了一些内容,但此后删除了该容器(除非使用docker rm -v,否则默认情况下不会删除其关联的卷),则可以将所述卷重新附加到新容器(声明相同的音量)。

    参见“Docker - How to access a volume not attached to a container?”。
    使用docker volume create,可以轻松地将命名卷重新附加到容器。
    docker volume create --name aname
    docker run -v aname:/apath --name acontainer
    ...
    # modify data in /apath
    ...
    docker rm acontainer
    
    # let's mount aname volume again
    docker run -v aname:/apath --name acontainer
    ls /apath
    # you find your data back!
    

    关于docker - Dockerfile中VOLUME的作用是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34809646/

    10-12 12:21
    查看更多