docker 数据管理

本文详细介绍了Docker中数据管理的两种主要方式:数据卷(DataVolume)和数据卷容器(DataVolumeContainers)。数据卷允许数据在容器间共享和重用,即使容器被销毁,数据仍能保留。数据卷容器则提供了在多个容器间共享数据的解决方案,通过挂载同一数据卷容器,实现数据的实时同步。

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

一、docker存储资源类型

用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及到容器的数据管理

(1)Data Volume (数据卷)

(2)Data Volume Dontainers --- 数据卷容器

二、Data Volume ---数据卷

Data Volume 本质上是 Docker Host 文件系统中的目录或文件,使用类似与 Linux 下对目录或者文件进行 mount 操作。数据卷可以在容器之间共享和重用,对数据卷的更改会立马生效,对数据卷的更新不会影响镜像,卷会一直存在,直到没有容器使用

Data Volume 有以下特点:

a)Data Volume 是目录或文件,而非没有格式化的磁盘(块设备)。

b)容器可以读写 volume 中的数据。

c)volume 数据可以被永久的保存,即使使用它的容器已经销毁。

Data Volume的使用:

通过-v 参数格式为 <host path>:<container path>

(1)运行一个容器,并创建一个数据卷挂载到容器的目录上

[root@localhost ~]# docker run -itd -v /web mariadb:latest /bin/bash

clip_image001

进入新创建的容器中

[root@localhost ~]# docker exec -it 5ab9c9ceb08cc74a28382691c8d37cf71eae1320e2bf54ab663507409aeb6a8d /bin/bash

clip_image002

clip_image003

可以看到创建的数据卷/web,此时里面为空

[root@localhost ~]# mkdir /test

[root@localhost ~]# cd /test/

[root@localhost test]# ls

[root@localhost test]# echo "test"> hello

[root@localhost test]# ls

hello

(2)将/web映射到宿主机的/test目录上,在容器里,不能直接映射硬盘,必须先将硬盘格式化,挂载到目录上,然后将该目录映射到共享数据卷的方法来实现

[root@localhost test]# docker run -itd -v /test:/web mariadb:latest /bin/bash

71f433584b1345d96b8b2699f58d2f1d8e0d7be2ef024551420085ca851b910f

[root@localhost ~]# docker exec -it

71f433584b1345d96b8b2699f58d2f1d8e0d7be2ef024551420085ca851b910f /bin/bash

clip_image004

在该容器里创建测试文件

clip_image005

退出该容器

clip_image006

发现在容器做的操作保存到了/test上

将该容器删除毁灭后,/test中的内容不变。

三、DataVolumeDontainers --- 数据卷容器

如果用户需要在容器之间共享一些持续更新的数据,最简单的方法就是使用数据卷容器,其实数据卷容器就是一个普通的容器,只不过是专门用它提供数据卷供其他容器挂载使用

Data Volume Dontainers使用:
a)创建一个名为 dbdata 的数据卷,并在其中创建一个数据卷挂载到 /dbdata

[root@localhost /]# docker run -dti -v /test:/dbdate --name dbser centos:latest /bin/bash

46baf4b8377674f024991eab7cd5c9410bf0c30a8fea874e1fe409756a98378d

参数为给容器指定名字为dbser方便记忆

进入创建好容器里

[root@localhost /]# docker exec -it 46baf4b8377674f024991eab7cd5c9410bf0c30a8fea874e1fe409756a98378d /bin/bash

clip_image007

b)其他容器使用--volume-from 去挂载dbdata容器中的/dbdata数据卷

[root@localhost ~]# docker run -itd --volumes-from dbser --name db1 centos:latest /bin/bash

465b7f7bbf5d42988d70ea4936fcd8f2050f47dfac791ff73bea578688fe08f4

[root@localhost ~]# docker run -itd --volumes-from dbser --name db2 centos:latest /bin/bash

ce92d47a023ca09a8a3176893b7a403f405c095d83ba5ffcc7ab73e11a8f8cdd

[root@localhost ~]# docker ps -a

clip_image008

进入db1容器内

[root@localhost ~]# docker exec -it 465b7f7bbf5d42988d70ea4936fcd8f2050f47dfac791ff73bea578688fe08f4 /bin/bash

clip_image009

进入db2容器内

[root@localhost ~]# docker exec -it ce92d47a023ca09a8a3176893b7a403f405c095d83ba5ffcc7ab73e11a8f8cdd /bin/bash

clip_image010

在db2容器内写入新内容

clip_image011

进入db1容器内查看,发现在db2中写的内容也能在db1中看到

此时,容器 db1 和 db2 同时挂载了同一个数据卷到本地相同 /dbdata目录。三个容器任何一个目录下的写入,都可以时时同步到另外两个

clip_image012

转载于:https://www.cnblogs.com/liangzb310/p/11179732.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值