Docker &引用;绑定挂载赢得';t与命名卷不同,将容器内容自动复制到主机";

Docker &引用;绑定挂载赢得';t与命名卷不同,将容器内容自动复制到主机";,docker,volume,mount,Docker,Volume,Mount,需要澄清评论: 绑定挂载的唯一“问题”是它不会复制 与命名卷不同,容器内容会自动发送到主机。 docs.docker.com/compose/compose file/#volumes 这准确吗?如果是,则: 当使用绑定装载时,如何将容器的“新数据”(例如,不断增长的数据库)放入主机(以在容器重新启动时保存数据) 在有命名卷之前,Docker如何跨容器重启持久化数据 绑定挂载的唯一“问题”是它不会复制 与命名卷不同,容器内容会自动发送到主机 这准确吗 接近准确,但我可以看到混乱。主机卷(也称为绑

需要澄清评论:

绑定挂载的唯一“问题”是它不会复制 与命名卷不同,容器内容会自动发送到主机。 docs.docker.com/compose/compose file/#volumes

这准确吗?如果是,则:

  • 当使用
    绑定装载时,如何将容器的“新数据”(例如,不断增长的数据库)放入主机(以在容器重新启动时保存数据)
  • 在有
    命名卷之前,Docker如何跨容器重启持久化数据
  • 绑定挂载的唯一“问题”是它不会复制 与命名卷不同,容器内容会自动发送到主机

    这准确吗

    接近准确,但我可以看到混乱。主机卷(也称为绑定装载)没有docker提供的初始化功能。对于匿名卷和命名卷,docker将使用该路径上的映像内容初始化卷。此初始化包括所有权和权限,这有助于避免权限错误。此初始化仅在创建容器且卷为新卷或空卷时运行,因此后续容器将不会拾取在较新映像版本中对映像所做的更改

    如果是,则:

  • 当使用绑定装载(以持久化数据)时,如何将容器的“新数据”(例如,不断增长的数据库)放入主机 如果容器重新启动)
  • 容器中应用程序的读写操作将继续进行到绑定装载中使用的主机文件系统。只有初始化步骤没有运行

  • 在有命名卷之前,Docker如何跨容器重启持久化数据
  • 有数据容器,从其他容器装入卷,但这是不灵活的(所有卷路径都固定到数据容器中的路径),并且持久数据与临时容器的混合管理,因此已被淘汰

    卷用于处理容器之间的数据持久性。单个容器重新启动(而不是被替换)仍然会有所有特定于容器的文件系统更改。
    docker rm
    命令删除这些文件系统更改,以及容器日志和容器的元数据/配置

    特定于容器的更改是docker使用的覆盖文件系统的读/写顶层。卷装载都是单独装载到此覆盖文件系统的子目录中(就像
    /home
    /var
    通常是Linux主机的
    /
    文件系统中单独的文件系统装载一样,对这些其他路径的所有读写都会转到单独的底层文件系统)

    绑定挂载的唯一“问题”是它不会复制 与命名卷不同,容器内容会自动发送到主机

    这准确吗

    接近准确,但我可以看到混乱。主机卷(也称为绑定装载)没有docker提供的初始化功能。对于匿名卷和命名卷,docker将使用该路径上的映像内容初始化卷。此初始化包括所有权和权限,这有助于避免权限错误。此初始化仅在创建容器且卷为新卷或空卷时运行,因此后续容器将不会拾取在较新映像版本中对映像所做的更改

    如果是,则:

  • 当使用绑定装载(以持久化数据)时,如何将容器的“新数据”(例如,不断增长的数据库)放入主机 如果容器重新启动)
  • 容器中应用程序的读写操作将继续进行到绑定装载中使用的主机文件系统。只有初始化步骤没有运行

  • 在有命名卷之前,Docker如何跨容器重启持久化数据
  • 有数据容器,从其他容器装入卷,但这是不灵活的(所有卷路径都固定到数据容器中的路径),并且持久数据与临时容器的混合管理,因此已被淘汰

    卷用于处理容器之间的数据持久性。单个容器重新启动(而不是被替换)仍然会有所有特定于容器的文件系统更改。
    docker rm
    命令删除这些文件系统更改,以及容器日志和容器的元数据/配置


    特定于容器的更改是docker使用的覆盖文件系统的读/写顶层。卷装载都是单独装载到此覆盖文件系统的子目录中(就像
    /home
    /var
    通常是Linux主机的
    /
    文件系统中单独的文件系统装载一样,对这些其他路径的所有读写都会转到单独的底层文件系统).

    如果要将卷装入容器,并且希望该卷可靠地包含映像中的某些内容,则需要在容器启动时手动将其复制到该容器中。一种方法是使用入口点包装脚本:

    #/垃圾箱/垃圾箱
    #将数据复制到可能装入的位置
    cp-a/app/static/var/www
    #然后运行图像的CMD
    执行官“$@”
    
    您应该将其包含在图像的Dockerfile中

    #必须使用JSON数组语法
    入口点[“/app/ENTRYPOINT.sh”]
    和以前一样
    
    关于Docker命名卷的初始化行为,这里有两个重要的细节需要注意。首先,您注意到,Docker只将内容复制到Docker命名卷的卷中;绑定挂载不会发生这种情况,在Kubernetes等其他环境中也不会发生这种情况

    第二个更微妙的细节是,初始化只在容器第一次运行时发生。如果已经有了