需要澄清评论here https://stackoverflow.com/questions/36387032/how-to-set-a-path-on-host-for-a-named-volume-in-docker-compose-yml#comment88705036_49920624:
绑定安装的唯一“问题”是它不会复制
与命名卷不同,容器内容会自动发送到主机。
docs.docker.com/compose/compose-file/#volumes
这准确吗?如果是,那么:
- 当使用容器时,如何将容器的“新数据”(例如不断增长的数据库)传输到主机中
bind mount
(在容器重新启动时保留数据)?
- Docker 是如何在容器重启后持久保存数据的?
named volumes
?
绑定安装的唯一“问题”是它不会复制
与命名卷不同,容器内容会自动发送到主机。
这准确吗?
接近准确,但我可以看到其中的混乱。主机卷(又名绑定挂载)没有 docker 的初始化功能。对于匿名卷和命名卷,docker 将使用该路径中映像的内容来初始化卷。此初始化包括所有权和权限,这有助于避免权限错误。此初始化仅在创建容器且卷为新卷或空卷时运行,因此后续容器不会拾取对较新映像版本中的映像所做的更改。
如果是,那么:
- 当使用绑定挂载(以持久化数据)时,如何将容器的“新数据”(例如不断增长的数据库)获取到主机中
如果容器重新启动)?
从容器中的应用程序读取和写入的操作将继续按预期传输到绑定挂载中使用的主机文件系统。只是初始化步骤没有运行。
- 在命名卷出现之前,Docker 如何在容器重启时保留数据?
曾经有数据容器,从其他容器挂载卷,但这种方式不灵活(所有卷路径都固定到数据容器中的路径),并且持久数据与临时容器混合管理,因此已被逐步淘汰。
卷用于处理容器之间的数据持久性。单个容器重新启动(而不是被替换)仍将具有所有容器特定的文件系统更改。这docker rm
命令删除这些文件系统更改以及容器日志和容器的元数据/配置。
容器特定的更改是 docker 使用的覆盖文件系统的读/写顶层。卷挂载都是单独挂载到该覆盖文件系统的子目录中(就像/home
or /var
通常是单独的文件系统挂载/
Linux 主机的文件系统,对这些其他路径的所有读取和写入都会转到单独的底层文件系统)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)