容器数据卷
什么是容器数据卷
docker理念
- 将应用和运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对于数据的要求,是希望能够持久化的!
- 就好比,你安装一个MySQL,结果你把容器删了,就相当于删库跑路了,这TM也太扯了吧!
- 所以我们希望容器之间有可能可以共享数据,Docker容器产生的数据,如果不通过docker commit 生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了!这样是行不通的!
- 为了能保存数据在Docker中我们就可以使用卷!让数据挂载到我们本地!这样数据就不会因为容器删除 而丢失了!
作用
卷就是目录或者文件,存在一个或者多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过 Union File System , 提供一些用于持续存储或共享数据的特性:卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。 特点:
- 数据卷可在容器之间共享或重用数据
- 卷中的更改可以直接生效
- 数据卷中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用它为止 总结: 就是容器的持久化,以及容器间的继承和数据共享!
使用数据卷方式:容器中直接使用命令来添加
挂载
- 命令
- docker run -it -v 宿主机绝对路径目录:容器内目录 镜像名
- 测试
- docker run -it -v /home/ceshi:/home centos /bin/bash ##ceshi文件夹会自己生成不需要特意去创建
此时:容器内部的文件/home,和虚拟机上/home/ceshi就已经相关联了,我们可以测试一下。 在虚拟机的/home/ceshi创建一个LH.txt,看容器内部的/home中是否会生成这个文件
测试一:查看对应路径下的文件
- 在虚拟机上
- [root@slaves2 ~]## cd /home/ceshi/
- [root@slaves2 ceshi]## ll
- 总用量 0
- [root@slaves2 ceshi]## touch LH.txt
- 查看容器内部
- [root@64760dd67074 /]## cd /home/
- [root@64760dd67074 home]## ls
- LH.txt
测试二:查看数据卷是否挂载成功 docker inspect 容器id
- 查看运行的容器
- docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 15132a4bcd1f centos “/bin/bash” About an hour ago Up About an hour brave_wilson
- 查看容器的详细信息
- docker inspect 151
扩展
容器停止运行后,数据也是一样能够同步过去的。
测试
- 你可以先将容器停止
- 修改虚拟机上的挂载目录
- 使用docker ps -a查看刚停止的容器
- 启动容器docker start 容器id
- 进入容器docker exec -it 容器id /bin/bash(或者docker attach 容器ID)
总结
使用容器数据卷的好处,以后我们修改文件就直接可以在虚拟机上操作了,不需要进入容器内部了。
本文作者:jujimeizuo
本文地址: https://blog.jujimeizuo.cn/2021/09/15/dockerimp/
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0 协议。转载请注明出处!