1.docker容器数据卷是什么
数据卷(Volumes)是一种特殊的目录,可以绕过Union文件系统,提供一些用于数据持久化和共享的功能。数据卷可以在容器之间共享和重用,并且对数据卷的修改会立即生效。数据卷的生命周期独立于容器,即使容器被删除,数据卷中的数据仍然存在。
2.docker容器数据卷能干什么
(1)数据持久化:将数据存储在宿主机的文件系统中,而不是容器内部,这样即使容器被删除,数据也不会丢失。
(2)数据共享:多个容器可以通过挂载同一个数据卷来共享数据。
(3)数据备份和恢复:可以直接备份数据卷,并在需要时恢复。
(4)性能优化:对于需要频繁读写的数据,使用数据卷可以提高性能,因为数据卷直接访问宿主机的文件系统。
3.如何挂载数据卷
docker run 命令添加-v参数
【 -v 宿主机目录:镜像目录】用来挂载数据卷
4.准备工作
这里以ubuntu镜像为例,run一个ubuntu容器
首先先拉取ubuntu镜像 docker pull ubuntu
启动ubuntu容器 docker run -it ubuntu(镜像id)
需注意:这里的ubuntu镜像是个精简版的,这里演示需要用到vim命令,精简版的ubuntu镜像是没有这个命令的,需要安装vim命令
进入ubuntu容器,执行下面两个命令,安装vim操作指令(前提是服务器或者虚拟机能联网)
【apt-get update】
【apt-get -y install vim】
将带有vim命令的容器,使用docker commit 命令生成一个新的镜像
docker commit -m=“描述” -a=“作者” 容器id 镜像名称:版本号
5.验证容器卷相关功能
启动带有vim命令的ubuntu容器
docker run -it -v /tmp/linux_data:/tmp/docker_data ubuntu镜像id
启动后,宿主机的/tmp/linux_data文件夹就和容器中的docker_data文件夹关联
如果没有指定的文件夹,操作系统会自动创建
首先在宿主机下的 /tmp/linux_data路径,创建一个a.txt文件【vim a.txt】
进入ubuntu容器的/tmp/docker_data 路径,发现a.txt文件已经完成同步
反过来,在ubuntu容器的/tmp/docker_data 路径,创建一个b.txt文件【vim b.txt】
宿主机下的 /tmp/linux_data路径发现b.txt文件已经完成同步
我们通过docker stop命令停止ubuntu容器
然后在宿主机下的 /tmp/linux_data路径创建c.txt文件【vim c.txt】
重启ubuntu容器,发现/tmp/docker_data 路径下存在c.txt文件
6.容器卷的继承
docker run -it --volumes-from 父类(容器id或者容器名字) ubuntu镜像id
我们用上述命令启动第二个ubuntu容器
我们发现新容器也有/tmp/docker_data文件夹,并且也有a.txt ,b.txt和c.txt
成功将文件加载到了新的容器中