数据卷概念
为了很好的实现
数据保存
和数据共享
,Docker提出了Volume
这个概念,简单的说就是绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷
。
数据卷实现机制
创建容器时,将宿主机的目录与容器内的目录进行映射
,可以通过修改宿主机
的某个目录从而去影响容器
,而且这个操作是双向绑定
,容器内的操作也会影响到宿主机,实现备份功能。但是容器被删除的时候,宿主机的内容并不会被删除,因为底层是通过拷贝实现的。如果多个容器挂载的是同一个目录,其中一个容器被删除,其他容器内的数据不会受到影响,同理,底层也是拷贝实现的
数据卷特性
- 数据卷可以在容器之间共享和重用
- 对数据卷的修改会立马生效
- 对数据卷的更新,不会影响镜像
- 数据卷默认会一直存在,即使容器被删除
容器和宿主机之间的数据卷属于
引用关系
,数据卷是从外界挂载到容器内部的,所以可以脱离容器的生命周期
而独立存在,正式由于数据卷的生命周期并不等同于容器的生命周期,在容器退出或者删除
以后,数据卷依然不会受到影响
,数据卷的生命周期一直持续到没有容器使用它为止
数据卷操作
数据卷挂载通用命令
创建容器时添加-v
参数,格式为宿主机:容器目录
,例如
sudo docker run -di -v /docker/mysql/data:/usr/local/data --name mysql01 -e MYSQL_ROOT_PASSWORD=root -d mysql
sudo docker run -di -v /docker/mysql/data:/usr/local/data --name mysql02 -e <