目录
前言
前几篇已经详细介绍好容器的三个核心概念镜像、容器和仓库。容器更擅长无状态应用,如果我们想要数据的持久化,为了能保存数据在Docker中,就可以使用卷!让数据挂载到我们本地!这样数据就不会因为容器删除。
知识点
什么是容器数据卷
卷的本质是文件或者目录,存在一个或者多个容器中,由docker挂载到容器,但不属于联合文件系统。卷的概念不仅解决了数据持久化的问题,还解决了容器间共享数据的问题。
为何使用容器卷
(1)数据的持久化,当容器重启后保证数据不丢失,例如我们可以使用卷将 MySQL 的目录持久化,实现容器重启数据库数据将不会丢失。
(2)如果将数据存储于镜像中,主机上的其他进程不方便访问这些数据。
容器卷有哪些特点
(1)数据卷可在容器之间共享或重用数据
(2)数据卷中的更改不会包含在镜像的更新中
(3)卷中的更改可以直接生效
(4)数据卷的生命周期一直持续到没有容器使用它为止
卷的操作
创建数据卷
数据卷创建命令
docker volume create myvolume
小贴士:默认情况下 ,Docker 创建的数据卷为 local 模式,仅能提供本主机的容器访问。
使用 -v 命令
docker run -it -v 宿主机绝对路径目录:容器内目录 镜像名
小提示:使用 -v 的方式指定容器内需要被持久化的路径,Docker 会自动为我们创建卷,并且绑定到容器中。
测试:
docker run -it -v /home/ceshi:/home centos /bin/bash
docker inspect 容器id
测试容器和宿主机之间数据共享:可以发现,在容器中,创建的会在宿主机中看到!
小贴士:容器停止退出后,主机修改数据也会同步到容器中!
删除数据卷
删除数据卷的命令
docker volume rm myvolume
小提示:容器的删除并不会自动删除已经创建的数据卷,因此不再使用的数据卷需要我们手动删除。
使用 docker 安装 mysql
(1)拉取镜像
docker pull mysql:5.7
(2)启动容器
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql1 mysql:5.7
小提示: 使用本地的Navicat连接测试一下。
(3)查看本地的 /home/mysql 目录
(4)删除mysql容器
docker rm -f mysql1
小提示:删除后,还是可以看到我们刚刚建立的mysql数据库在本地存储着 。
总结
到此,相信你对 Docker 容器卷做持久化存储有一定的了解,也了解 Docker 卷的常用操作,并且对卷的实现原理也有了较清晰的认识。
如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。欢迎关注,一起docker学习之旅!