从docker的理念说起,docker将应用和环境打包成一个镜像,运行镜像(生成容器)就可以访问服务了。,如果数据都存在容器中,那么删除容器,数据就会丢失!需求:数据可以持久化 MySQL容器删了,就相当于删库了。需求:MySQL数据可以本地存储,容器之间可以有一个数据共享的技术,docker容器产生的数据同步到本地或者别的地方。,这就是数据卷技术,就是目录挂载,将容器内的目录,挂载到虚拟机上或者Linux上,
,目的:实现容器数据的持久化和同步操作。容器间也可以数据共享,如果挂载一个
空的数据卷
到容器中的一个
非空目录
中,那么这个目录下的文件会被复制到数据卷中。,如果挂载一个
非空的数据卷
到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。,这两个规则都非常重要,灵活利用第一个规则可以帮助我们
初始化数据卷
中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。,
docker inspect
命令查看容器信息,
,1、在容器内部修改文件同步到Linux主机上,进入容器,在
/home
目录下创建
123.sh
文件,
,主机内可以查看在容器内部创建的文件,
,2、同样地,在Linux上修改挂在卷文件可以同步到容器内部,
,3、停止容器,修改Linux主机上的文件,同步到容器内,
,请查看下一章节,
,具名挂载/匿名挂载 匿名挂载,具名挂载,
,
,
,查看Linux主机docker工作目录
/var/lib/docker
,所有docker容器内的卷,没有指定目录的情况下都是存放在
/var/lib/docker/volumes/xxx/_data
目录下,
,给挂载的数据卷增加读写权限控制,通过
-v
容器内路径,
ro
rw
改变读写权限,ro readonly 只读,rw readwrite 可读写,
ro
: 说明这个路径只能通过宿主机来操作,容器内无法操作