docker volume

本文详细介绍了Docker中实现数据持久化和共享的方法,包括DataVolumes的使用,如何在容器间同步数据,以及利用NFS进行网络文件系统挂载。通过具体的命令示例,展示了Docker-managed Volume和Bind-mount Volume的区别。

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

Data Volumes的初衷是实现独立于容器的生命周期实现数据持久化,实现多个docker容器之间的数据持久化及共享,因此删除容器的时候不回删除卷,也不会对哪怕未被引用的卷作垃圾回收.
Volume在初始化的时候就会创建,由base image提供的卷中的数据会在此期间完成复制.

Docke-managed Volume

docker run --name b1 -it -v /data busybox

这个命令在容器中创建了一个data目录,并且这个目录内在宿主机上也有对应的路径:
/var/lib/docker/volumes/8cce4397f5ed1516742f8865bef532f8d5ce953347a0bf5a13ecf8bce8cfbb34/_data

执行:

docker inspect b1

可以在inspect到的信息config节点里找到这样的配置:

"Mounts": [
            {
                "Type": "volume",
                "Name": "8cce4397f5ed1516742f8865bef532f8d5ce953347a0bf5a13ecf8bce8cfbb34",
                "Source": "/var/lib/docker/volumes/8cce4397f5ed1516742f8865bef532f8d5ce953347a0bf5a13ecf8bce8cfbb34/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

Bind-mount Volume

docker run --name b2 -it --rm -v /data/volumes/b2:/data busybox

再执行

docker inspect b2

来查看Mounts节点的配置

"Mounts": [
            {
                "Type": "bind",
                "Source": "/data/volumes/b2",
                "Destination": "/data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]

当我们关闭容器的时候,容器删除,而创建的宿主机上的卷依然存在.

多个容器挂载同一个Volume

实现多个容器间数据的同步与交互
和上面的操作类似.
如果环境允许,我们可以挂载一个nfs
docker支持复制其他容器的存储卷,也支持复制网络配置.

docker run -it --rm --name b3 --volumes-from b1 busybox:latest

~~完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值