Docker学习--容器数据卷
什么是容器数据卷?
docker理念回顾:将应用和环境打包成一个镜像!
数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化 ?
MySQL,容器删了,数据就丢失了!需求:Mysql数据可以保存在本地
容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地。
这就是卷技术!目录的挂载,将我们容器中的目录,挂载在Linux上面!
总结:容器的持久化和数据同步操作!容器间也是可以数据共享!
使用数据卷
方式1:直接使用命令来挂载 -v
docker run -it -v 主机目录:容器内目录 #测试 [root@tianliang home]# docker run -it -v /home/ceshi:/home centos /bin/bash #启动起来后 通过命令查看镜像的详细信息 docker inspect 镜像ID
测试文件的同步效果:
再来测试:
1:关闭镜像容器
2:修改主机内的文件内容
3:运行容器镜像查看,发现数据也是可以同步的
好处:我们以后修改只需要在本地修改即可,容器内会自动同步!
实战:安装Mysql
思考:mysql的数据持久化问题
#搜索获取镜像 docker search mysql #下载镜像 docker pull mysql:5.7
总结:安装后测试是否能连接上,卸载和移除mysql镜像,本地的挂载文件不会变化,可以一次挂载多个文件。
具名和匿名挂载
# 匿名挂载 -v 容器内路径! docker run -d -P --name nginx01 -v /etc/nginx nginx #查看所有volume的情况 docker volume ls local b8d2e5bcadf2550abd36ff5aa544c721a45464a4406fb50979815de773086627 #这里发现,这种就是一种匿名挂载, 我们在-v的时候,只写了容器内的路径,没有写容器外的路径导致
#具名挂载,通过-v 容器卷名:容器内路径指定
查看这个卷:docker volume inspect juming-nginx,如下:
说明,所有docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxx/_data目录下
我们通过具名挂载,可以方便的找到我们的这个卷,大多数情况下使用具名挂载。
问题1:
#如果确定是具名挂载还是匿名挂载,还是指定路径挂载? -v 容器内路径 #匿名挂载 -v 卷名:容器内路径 #具名挂载 -v /宿主机路径:容器内路径 #指定路径挂载
扩展:
