在 Docker 中,容器的文件系统是临时的。如果容器被删除或重新创建,所有未保存的数据都会丢失。为了解决这个问题,我们可以使用以下两种方式来持久化数据:
方式一: 使用Bind Mounts实现数据持久化
Bind Mounts 允许你将宿主机文件系统中的目录或文件挂载到容器内的某个目录。这种方式非常直接,适合在开发和测试环境中使用。
案例:运行一个Nginx 容器,并将宿主机上的 html 目录挂载到容器内的 /usr/share/nginx/html 目录。
python
# 宿主机创建一个目录,用于存放数据
mkdir /root/mdynginx/html/
# 创建容器,指定挂载路径
docker run -d -p 80 --name mdynginx -v /root/mdynginx/html/:/usr/share/nginx/html/ nginx:1.26
方式二: 使用Volume实现数据持久化
Volumes 是 Docker 推荐的持久化数据方式,因为它们独立于宿主机的文件系统,并由 Docker 管理,适合生产环境使用。
- 1,创建一个Volume,命名为mdyvolume
python
docker volume create mdyvolume
# 查看volume列表
docker volume ls
- 2,运行容器,并使用
python
docker run -d -p 80 --name mdynginx2 -v mdyvolume:/usr/share/nginx/html nginx:1.26
- 3,查看volume中的数据
python
docker volume inspect mdyvolume
[
{
"CreatedAt": "2024-08-18T09:53:46+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/mdyvolume/_data", # 该路径为数据持久存储位置
"Name": "mdyvolume",
"Options": null,
"Scope": "local"
}
]