什么是容器数据卷从docker的理念说起,docker将应用和环境打包成一个镜像,运行镜像(生成容器)就可以访问服务了 。
- 如果数据都存在容器中,那么删除容器,数据就会丢失!需求:数据可以持久化
- MySQL容器删了,就相当于删库了 。需求:MySQL数据可以本地存储
这就是数据卷技术,就是目录挂载,将容器内的目录,挂载到虚拟机上或者Linux上
![Docker | 容器数据卷详解](http://img.zhejianglong.com/231018/06263141J-0.png)
文章插图
目的:实现容器数据的持久化和同步操作 。容器间也可以数据共享
数据的覆盖问题
- 如果挂载一个
空的数据卷
到容器中的一个非空目录
中,那么这个目录下的文件会被复制到数据卷中 。
- 如果挂载一个
非空的数据卷
到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据 。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉 。
初始化数据卷
中的内容 。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果 。使用数据卷方式一:直接使用命令挂载 -vdocker run -it -v 主机目录:容器内目录docker run -it -v /home/test:/home centos /bin/bash
docker inspect
命令查看容器信息![Docker | 容器数据卷详解](http://img.zhejianglong.com/231018/062631B45-1.png)
文章插图
测试挂载卷1、在容器内部修改文件同步到Linux主机上进入容器,在
/home
目录下创建123.sh
文件![Docker | 容器数据卷详解](http://img.zhejianglong.com/231018/0626313591-2.png)
文章插图
主机内可以查看在容器内部创建的文件
![Docker | 容器数据卷详解](http://img.zhejianglong.com/231018/0626314J9-3.png)
文章插图
2、同样地,在Linux上修改挂在卷文件可以同步到容器内部
![Docker | 容器数据卷详解](http://img.zhejianglong.com/231018/0626311509-4.png)
文章插图
3、停止容器,修改Linux主机上的文件,同步到容器内# 1、停止容器exit# 2、查看容器是否还在运行docker ps# 3、在Linux主机上修改对应目录的文件# 4、启动容器并查看 # 4.1、 查看历史运行的容器 docker ps -a # 4.2、 启动容器 docker start CONTAINER ID # 4.3、 进去容器 docker attach CONTAINER ID # 4.4、 查看数据卷文件
![Docker | 容器数据卷详解](http://img.zhejianglong.com/231018/06263155b-5.png)
文章插图
方式二:Dockerfile文件请查看下一章节
数据卷命令docker volumedocker volume --helpUsage: docker volume COMMANDManage volumesCommands: create Create a volume inspect Display detailed information on one or more volumes ls List volumes prune Remove all unused local volumes rm Remove one or more volumesRun 'docker volume COMMAND --help' for more information on a command.
![Docker | 容器数据卷详解](http://img.zhejianglong.com/231018/062631J26-6.png)
文章插图
具名挂载/匿名挂载匿名挂载-v 容器内路径-P 自动分配端口号docker run -d -P --name nginx02 -v /etc/nginx nginx具名挂载-v 卷名:容器内路径docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx nginx
![Docker | 容器数据卷详解](http://img.zhejianglong.com/231018/0626312b7-7.png)
文章插图
查看数据卷方式一:docker inspect 容器ID
![Docker | 容器数据卷详解](http://img.zhejianglong.com/231018/0626315534-8.png)
文章插图
方式二:docker volume inspect juming-nginx
![Docker | 容器数据卷详解](http://img.zhejianglong.com/231018/0626314K1-9.png)
文章插图
查看Linux主机docker工作目录/var/lib/docker
所有docker容器内的卷,没有指定目录的情况下都是存放在/var/lib/docker/volumes/xxx/_data
目录下
推荐阅读
- 如何优雅的备份MySQL数据?看这篇文章就够了
- 普通双非学子上岸浙大工程师数据科学项目 计算机保研,maybe this is all you need
- 大数据技术之HBase原理与实战归纳分享-上
- 使用docker-compose安装Prometheus
- Spring 深入——IoC 容器 01
- 07 ClickHouseClickHouse数据库引擎解析
- Docker | 部署nginx服务
- mac通过docker一键部署Nexus3
- Docker Desktop 可以直接启用Kubernetes 1.25 了
- 使用EF Core更新与修改生产数据库