这一章我们主要是为大家介绍一下持计划存储与数据共享技术与内容,之前我们讲过Image与container的关系,其中Image是只读的而container是可以写数据的。
当我们创建一个container我可以在这个container里面创建一些文件与数据,但是呢,我们在container创建的数据仅限于这个container,什么意思呢?比如说我们把一个容器停掉或者删除,那么这个数据 就都没有了。
但是我们想创建一个数据库的container,我们肯定要写很多的数据,如果我们那天不小心把容器删除掉了,里面的数据也没有这个是我们无法接受的。
所以container提供了一种持久化存储的方式。
Docker持久化数据的方案
- 基于本地文件系统的Volume.
+ 受管理的data Volume, 由docker后台自动创建
+ 绑定挂载的Volume, 具体挂载位置可以由用户指定 - 基于plugin的volume比如NAS, aws
我们这里主要是讲本地文件系统的Volume,这种方式就是在Docker create或者Docker run时, 通过-v参数将主机的目录作为容器的数据卷。
好的小伙伴们,让我们进入数据的时代吧!!!!
新增:
这里给大家讲个问题,如果说你把数据挂载到本地的时候,如果你还想在重新启动一个mysql或者给容器换个名字,这个时候你一定要把data里面的数据清空再次执行,不然会出很多稀奇古怪的问题。比如说下面这条命令
docker run --name apple-mysql -v /Users/steven/fisher/data/apps/mysql/conf:/etc/mysql/conf.d -v /Users/steven/fisher/data/apps/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=111111 mysql:latest
- 做端口转发的时候,要把本地的mysql服务停掉
- 如果你想新增一个更换container的名字 你一定要把/Users/steven/fisher/data/apps/mysql/data这个下面的数据清空,好的谢谢大家!!!
网友评论