数据卷实际上就是宿主机上的目录或者是文件,可以被直接mount到容器当中使用,实际生成环境中,需要针对不同类型的服务、不同类型的数据存储要求做相应的规划,最终保证服务的可扩展性、稳定性以及数据的安全性
数据卷的特点
数据卷是目录或者文件,并且可以在多个容器之间共同使用,实现容器之间共享和重用
对数据卷更改数据在所有容器里面会立即更新。
数据卷的数据可以持久保存,即使删除使用使用该容器卷的容器也不影响。
在容器里面的写入数据不会影响到镜像本身,即数据卷的变化不会影响镜像的更新
依赖于宿主机目录,宿主机出问题,上面容器会受影响,当宿主机较多时,不方便统一管理
匿名和命名数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,会拷贝到新初
始化的数据卷中
数据卷使用方法
启动容器时,可以指定使用数据卷实现容器数据的持久化,数据卷有三种
1、指定宿主机目录或文件: 指定宿主机的具体路径和容器路径的挂载关系
2、匿名卷: 不指定数据名称,只指定容器内目录路径充当挂载点,docker自动指定宿主机的路径进行挂
载
3、命名卷: 指定数据卷的名称和容器路径的挂载关系
docker run 命令的以下格式可以实现数据卷
-v, --volume=[host-src:]container-dest[:<options>]
<options>
ro 从容器内对此数据卷是只读,不写此项默认为可读可写
rw 从容器内对此数据卷可读可写,此为默认值
方式1文件数据卷
#指定宿主机目录或文件格式:
-v <宿主机绝对路径的目录或文件>:<容器目录或文件>[:ro] #将宿主机目录挂载容器目录,两个目录都可自动创建
实例:
#在宿主机创建一个存放index.html的文件
mkdir -p /data/testdir/index.html
echo "十四帅爆" > /data/testdir/index.html
#创建nginx容器
docker pull nginx
docker tar nginx nginx:1
docker run -d -v /data/te