Docker 从门到精通(四)一 数据卷的使用

2025-05-27 0 25
导读 docker 是
下面的容器技术,是目前最火的开源技术之一,我们介绍了docker的基本使用,基本
,本地网络设置,本地仓库等,今天我们介绍下docker的数据卷的使用。

一,数据卷的使用

有时候需要使用数据库,但是又希望它的数据能保存在本地,Docker中提供了数据卷可以供你方便的操作数据数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

数据卷可以在容器之间共享和重用

数据卷的修改会立马生效

数据卷的更新,不会影响镜像

数据卷默认会一直存在,即使容器被删除

*注意:数据卷的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷。

Docker 从门到精通(四)一 数据卷的使用


添加一个数据卷:

#dockerrun-d-it--namebusybox-v/data/busybox

这会在容器内创建一个 /data 目录,并加载一个数据卷到容器的 /data 目录。


进入容器:

#dockerexec-itbusyboxsh

查看目录映射:

#dockerinspect-f{{.Volumes}}busybox
map[/data:/var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data]
可以看到将容器中的/data目录映射到了/var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data这个目录下,所以数据在容器中的/data目录和此目录下是同步的。
[root@sta2data]#cd/var/lib/docker/volumes/b98191464fb0b1a888507b1e5b324802012297342adfe5d6125bcbfd08b621a9/_data
[root@sta2_data]#touchb

在容器中 /data 目录下查看:

/data#ls
ab
b文件依然存在。

数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个

[root@sta2docker]#dockerstopeec30d8d6fce
[root@sta2docker]#dockerrm-veec30d8d6fce

使用 -v 标记也可以指定挂载一个本地主机的目录到容器中去,-v 标记也可以从主机挂载单个文件到容器中

[root@sta2docker]#dockerrun-it--namemybusybox-v/data:/databusyboxsh

这种方法相当于在本机中指定了要映射的目录,将本地的数据卷 /data 目录加载到容器中的 /data 目录。

/#cd/data/
/data#ls
a
/data#touchc

然后在本机的 /data 目录查看 c 文件是否存在:

[root@sta2data]#ls
ac

Docker 挂载数据卷的默认权限是读写,用户也可以通过 :ro 指定为只读。

#dockerrun-it--namemybusybox-v/data:/data:robusyboxsh

二,数据卷容器

如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。

[root@sta2data]#dockerrun-d-v/data/--namedbdatabusybox#首先,创建一个名为dbdata的数据卷容器

然后,在其他容器中使用 –volumes-from 来挂载 dbdata 容器中的数据卷。

#dockerrun-d--volumes-fromdbdata--namedb1nginx

#dockerrun-d--volumes-fromdbdata--namedb2nginx

也可以使用 –volumes-from 来挂载来自多个容器的多个数据卷:

#dockerrun-d--namedb3--volumes-fromdb1--volumes-fromdbnginx

提示:使用 –volumes-from 参数所挂载数据卷的容器自己并不需要保持在运行状态。


备份数据

首先使用 –volumes-from 标记来创建一个加载 dbdata 容器卷的容器,并从主机挂载当前目录到容器的 /backup 目录。命令如下:

#dockerrun--volumes-fromdbdata-v/data:/backupbusyboxtarcvf/backup/backup.tar.gz/data/


恢复

如果要恢复数据到一个容器,首先创建一个带有空数据卷的容器 dbdata2。

#dockerrun-v/dbdata--namedbdata2ubuntu/bin/bash

然后创建另一个容器,挂载 dbdata2 容器卷中的数据卷,并使用 untar 解压备份文件到挂载的容器卷中。

#dockerrun--volumes-fromdbdata2-v/data:/backupbusyboxtarxvf/backup/backup.tar.gz

为了查看/验证恢复的数据,可以再启动一个容器挂载同样的容器卷来查看

#dockerrun--volumes-fromdbdata2busybox/bin/ls/dbdata


删除数据

如果删除了挂载的容器(db1 和 db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用 docker rm -v 命令来指定同时删除关联的容器。

原文来自:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Docker 从门到精通(四)一 数据卷的使用 https://www.kuaiidc.com/60338.html

相关文章

发表评论
暂无评论