浅谈Docker数据持久化

本文介绍了Docker中实现数据持久化的两种主要方式:数据卷和数据卷容器,并详细阐述了它们的创建、使用及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

容器中数据持久化主要有两种方式:

数据卷(Data Volumes)
数据卷容器(Data Volumes Dontainers)
数据卷

数据卷是一个可供一个或多个容器使用的特殊目录,可以绕过UFS(Unix File System)。

数据卷可以在容器之间共享和重用
对数据卷的修改会立马生效
对数据卷的更新,不会影响镜像
数据卷默认会一直存在,即使容器被删除
一个容器可以挂载多个数据卷
注意:数据卷的使用,类似于 Linux 下对目录或文件进行 mount。

创建数据卷

示例:

docker run –name nginx-data -v /mydir nginx
执行如下命令即可查看容器构造的详情:

docker inspect 容器ID
由测试可知:

Docker会自动生成一个目录作为挂载的目录。
即使容器被删除,宿主机中的目录也不会被删除。
删除数据卷

数据卷是被设计来持久化数据的,因此,删除容器并不会删除数据卷。如果想要在删除容器时同时删除数据卷,可使用如下命令:

docker rm -v 容器ID
这样既可在删除容器的同时也将数据卷删除。

挂载宿主机目录作为数据卷

docker run –name nginx-data2 -v /host-dir:/container-dir nginx
这样既可将宿主机的/host-dir路径加载到容器的/container-dir中。

需要注意的是:

宿主机路径尽量设置绝对路径——如果使用相对路径会怎样?

测试给答案
如果宿主机路径不存在,Docker会自动创建
TIPS

Dockerfile暂时不支持这种形式。

挂载宿主机文件作为数据卷

docker run –name nginx-data3 -v /文件路径:/container路径 nginx
指定权限

默认情况下,挂载的权限是读写权限。也可使用:ro 参数指定只读权限。

示例:

docker run –name nginx-data4 -v /host-dir:/container-dir:ro nginx
这样,在容器中就只能读取/container-dir中的文件,而不能修改了。

数据卷容器

如果有数据需要在多个容器之间共享,此时可考虑使用数据卷容器。

创建数据卷容器:

docker run –name nginx-volume -v /data nginx
在其他容器中使用-volumes-from 来挂载nginx-volume容器中的数据卷。

docker run –name v1 –volumes-from nginx-volume nginx
docker run –name v2 –volumes-from nginx-volume nginx
这样:

v1、v2两个容器即可共享nginx-volume这个容器中的文件。
即使nginx-volume停止,也不会有任何影响。

Docker中,数据持久化是指将容器中的数据保存到宿主机或者外部存储中,以保证数据的持久性。Docker提供了多种数据持久化的方式,其中一种是使用Volume。Volume是Docker官方推荐的持久化方案,它可以将容器中的数据保存到宿主机文件系统中的某个目录。默认情况下,volume的存储空间来自于宿主机文件系统中的/var/lib/docker/volumes/目录[3]。 当我们在使用docker run命令创建容器时,可以使用-v参数来指定volume的名称和挂载路径。如果没有指定volume名称,Docker会默认创建一个匿名的volume。例如,可以使用如下命令创建一个名为container1的容器,并将宿主机目录/data挂载到容器内部: ``` docker run -it -v /data --name container1 busybox ``` 在宿主机上,我们可以通过/var/lib/docker/volumes/目录查找volume的实际存储路径。比如,如果我们创建了一个名为my-volume的volume,那么它在宿主机上的路径就是/var/lib/docker/volumes/my-volume/_data。 使用volume进行数据持久化可以确保容器在重新启动、迁移或升级时不会丢失数据。此外,volume还可以方便地与其他容器共享数据,实现数据的共享和协作。通过使用Docker数据持久化功能,我们可以更好地管理容器中的数据,并确保数据的安全性和可靠性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Hello Docker(七)——Docker数据持久化](https://blog.youkuaiyun.com/A642960662/article/details/123154025)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值