1、什么是数据卷
通过镜像创建一个容器。容器一旦被销毁,则容器内的数据将一并被删除。但有些情况下,通过服务器上传的图片出会丢失。容器中的数据不是持久化状态的。这个时候可以通过数据卷来解决这个问题。
数据卷是一个可供一个或多个容器使用的特殊目录。数据卷的特点是:1、数据卷可以在容器之间共享和重用。2、对数据卷的修改会立马生效。3、对数据卷的更新不会影响镜像。4、数据卷默认会一直存在即使容器被删除。
通俗一点而言,数据卷相当于硬盘,可以保存服务器的数据,即是服务器关闭了,数据依然不会丢失。
2、为什么需要数据卷
这得从 docker 容器的文件系统说起。出于效率等一系列原因,docker 容器的文件系统在宿主机上存在的方式很复杂,这会带来下面几个问题:1、不能在宿主机上很方便地访问容器中的文件。2、无法在多个容器之间共享数据。3、当容器删除时,容器中产生的数据将丢失。
所以引入数据卷的目的就是为了解决上诉的问题,实现多个容器共享数据,保存数据、方便宿主机访问容器中的数据。数据卷是存在于一个或多个容器中的特定文件或文件夹,这个文件或文件夹以独立于 docker 文件系统的形式存在于宿主机中。
数据卷的最大特定是:其生存周期独立于容器的生存周期。
3、使用场景
1、在多个容器之间共享数据,多个容器可以同时以只读或者读写的方式挂载(引用/指向的意思)同一个数据卷,从而共享数据卷中的数据。
2、当宿主机不能保证一定存在某个目录或一些固定路径的文件时,使用数据卷可以规避这种限制带来的问题。
3、当你想把容器中的数据存储在宿主机之外的地方时,比如远程主机上或云存储上。
4、当你需要把容器数据在不同的宿主机之间备份、恢复或迁移时,数据卷是很好的选择。
4、相关命令
创建数据卷命令如下:
# 创建数据卷之后,默认会存放到目录: /var/lib/docker/volume/数据卷名称/_data目录下docker volume create 数据卷名称
查看数据卷命令如下:
# 查看数据卷
docker volume inspect 数据卷名称# 查看全部数据卷信息
docker volume ls
删除数据卷命令如下:
# 删除数据卷
docker volume rm 数据卷名称