繁体   English   中英

Docker 容器中数据和主机卷的区别?

[英]Difference between data and host volume in Docker containers?

据我所知,在 Docker 中使用音量有两种选择:

1.挂载一个主机目录作为数据卷:

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1433:1433 
-v <host directory>/data:/var/opt/mssql/data 
-d mcr.microsoft.com/mssql/server:2019-latest

2.使用数据卷容器:

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1433:1433 
-v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest

我的问题:

1)在第一个选项中,我认为/var/opt/mssql/data中的数据完全保存在<host directory>上。 但是在第二个选项中,它保存在 Docker 数据文件中的什么位置?

2)假设我有一个当前使用的容器,其中存储了/var/opt/mssql/data ,然后决定将其挂载到<host directory> 在这个场景中,我可以使用第二个选项中的docker run命令将这些数据直接移动到主机目录吗? 或者我应该备份和恢复这些数据吗?

3)在主机目录中挂载数据并删除所有容器并卸载Docker时,我们仍然有数据。 那么,在重装Docker并将同一个数据库挂载到同一个主机后,在卸载Docker之前,我们会得到相同的数据吗?

  1. 您的绑定挂载数据保存在主机上的绑定挂载文件夹中。 没有什么真正神秘的。 对于 docker 卷,在大多数典型情况下,数据保存在您的 docker 主机上。 确切的位置和文件夹架构取决于您的配置,更具体地说取决于使用的存储驱动程序 同时,检查/var/lib/docker/volumes可能是深入了解的一个好的开始。 请注意,某些驱动程序支持通过网络存储数据(例如vieux/sshfs ...),但从您的问题来看,我怀疑您目前使用其中的任何一个。

  2. 我不完全确定你在这里问什么。 同时,docker 卷(而不是绑定挂载,即将主机文件夹挂载到容器)提供的一项功能是能够在容器启动时将内容从映像中的路径复制到新创建的卷

  3. 数据就是数据,无论您将其保存在何处。 如果您有任何类型的(经过彻底测试的)备份。 您将始终能够恢复它并将其放入新容器中。 对于 docker 初学者来说,这种情况通常很容易想象绑定挂载(即,备份主机上的文件夹。恢复它并将其绑定挂载回新容器)。 如果您决定使用卷(这可能是卷文档介绍中解释的一个好建议),请参阅备份、恢复或迁移数据卷以初步了解如何继续。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM