云时代【7】—— 存储卷

本文详细介绍了Docker中的存储卷概念,包括其定义、分类(volume、bindmount和tmpfs),并提供了创建、管理以及实战操作的示例,展示了如何在Docker容器中实现数据持久化和共享宿主机资源。

四、Docker

(四)存储卷

1. 存储卷

(1)定义

存储卷是 将宿主机的本地文件系统中存在的某个目录 直接与 容器内部的文件系统上的某一目录 建立绑定关系。
用专业的语言解释就是:当我们在容器中的这个目录下写入数据时,容器会将其内容直接写入到宿主机上与此容器建立了绑定关系的目录,这个目录就被称作:存储卷。我们可以理解为:容器是地面上的房子,而房子(容器)的地下室就是存储卷。哪怕容器(地下室上的房子)被删除掉也不会影响到存储卷(地下室)。
既然卷的本质是文件或者目录,那么它就可以绕过默认的联合文件系统,直接以文件或目录的形式存在于宿主机上。例如:将宿主机的/data/web 目录与容器中的/container/data/web目录绑定,当容器中的进程向/container/data/web目录写数据时,其实也直接写到了宿主机的目录上的/data/web上。存储卷绕过容器文件系统与宿主机的文件系统建立关联关系,使得可以在宿主机和容器内共享数据库内容,让容器直接访问宿主机中的内容,也可以宿主机向容器写入内容,容器和宿主机的数据读写是同步的。

(2)分类

目前Docker提供了三种方式将数据从宿主机挂载到容器中:

  • volume管理卷

默入映射到宿主机的/var/lib/docker/volumes目录下。只需要在容器内指定容器的挂载点是什么,而它会被绑定宿主机的哪个目录下呢?一般容器引擎**daemon**自行创建一个空的目录 或 使用一个已经存在的目录,与存储卷建立存储关系。这种方式极大解脱用户在使用卷时的耦合关系,缺陷是用户无法指定那些使用目录,临时存储比较适合

  • bind mount绑定数据卷

映射到宿主机指定路径下,在宿主机上的路径要人工的指定一个特定的路径,在容器中也需要指定一个特定的路径,两个已知的路径建立关联关系

  • tmpfs mount临时数据卷

映射到于宿主机内存中,一旦容器停止运行, tmpfsmounts 会被移除,数据就会丢失,用于高性能的临时数据存储

2. 相关指令

(1)管理卷 Volume

A. 创建方式

方式一:docker volume
docker volume create
docker volume ls
docker volume inspect '卷ID'
ls -l /data/var/lib/docker/volumes/'卷ID'/_data

image.png

docker volume create --label MYTEST=1 myvolumetest2
docker volume ls
docker volume inspect myvolumetest2
ls -l /data/var/lib/docker/volumes/myvolumetest2/_data

image.png

echo "123" > ./test.txt
ll
cat test.txt
docker volume rm myvolumetest3
ll # 删除卷之后,写入卷的文件也会被删除

image.png

docker volume ls
docker volume prune
docker volume ls

image.png

方式二:docker run -v 与 --mount
docker run -d --name myvolumenginx1 -v volumenginx1:/usr/share/nginx/html nginx:1.23.0
docker ps
docker volume ls
docker volume inspect volumenginx1
ls -l /data/var/lib/docker/html/volumenginx1/_data
docker exec -it myvolumenginx1 bash
ls -l
rm index.html
exit
ls -l /data/var/lib/docker/html/volumenginx1/_data # 默认情况下可以直接删除卷中的文件

image.png

docker run -d --name myvolumenginx2 -v volumenginx2:/usr/share/nginx/html:ro nginx:1.23.4
docker ps | grep myvolumenginx2
docker volume ls | grep volumenginx2
docker exec -it myvolumenginx2 bash
cd /usr/share/nginx/html
ls -l
rm index.html <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值