什么是数据卷
是一个可供一个或多个容器使用的特殊目录
特性:
- 数据卷可以在容器之间共享和重用
- 对数据卷的修改会立马生效
- 对数据卷的更新,不会影响镜像
- 数据卷默认会一直存在,即使容器被删除
为什么需要数据卷?
出于效率等一系列原因,docker 容器的文件系统在宿主机上存在的方式很复杂,这会带来下面几个问题:
- 不能在宿主机上很方便地访问容器中的文件。
- 无法在多个容器之间共享数据。
- 当容器删除时,容器中产生的数据将丢失。
使用数据卷的最佳场景
- 在多个容器之间共享数据,多个容器可以同时以只读或者读写的方式挂载同一个数据卷,从而共享数据卷中的
数据。 - 当宿主机不能保证一定存在某个目录或一些固定路径的文件时,使用数据卷可以规避这种限制带来的问题。
- 当你想把容器中的数据存储在宿主机之外的地方时,比如远程主机上或云存储上。
- 当你需要把容器数据在不同的宿主机之间备份、恢复或迁移时,数据卷是很好的选择。
数据卷应用
1 创建数据卷
docker volume create 数据卷名称
创建数据卷之后,默认会存放到目录: /var/lib/docker/volume/数据卷名称/_data目录下
2 查看数据卷
docker volume inspect 数据卷名称
3 查看全部数据卷信息
docker volume ls
4 删除数据卷
docker volume rm 数据卷名称
5 应用数据卷
5.1 当你映射数据卷时,如果数据卷不存在,Docker会帮你自动创建
docker run -v 数据卷名称:容器内路径 镜像ID
5.2 直接指定一个路径作为数据卷的存储位置
docker run -v 路径:容器内部的路径 镜像ID
如果挂载数据卷是报错:docker: Error response from daemon: error while creating mount source path '/usr/local/docker/nginx/html': mkdir /usr/local/docker: read-only file system.
这种可能是snap安装的docker有一个bug,不能挂在/home之外的地方,将挂载目录放到home下面试试
网友评论