作用:
- 将宿主机的文件与容器关联,持久化文件到宿主机中,避免容器销毁时,文件被一起删除
- 关联的文件实际存储在宿主机中,容器类似挂载了文件句柄,可以直接访问宿主机的这些文件
数据卷分两种:
- 宿主机自身管理
- docker管理
宿主机自身管理:
- 创建并启动容器时,使用 -v 指定具体的宿主机路径和容器路径
- 目录不存在会自动创建(宿主机和容器),挂载文件需要提前在宿主机创建
- 这种挂载方式,以宿主机中文件为准,不会将镜像层中的文件(即容器中已有的文件)同步到宿主机,原镜像层中的文件不会生效(不可见),容器直接使用宿主机文件
docker run -d --name nginx-v /data/volume/nginx:/etc/nginxnginx
可以先创建一个容器,把容器中的相关文件复制到宿主机中,在重新创建启动容器并挂载
docker管理:
- 不指定宿主机路径,由docker自行决定挂载目录,一般挂载在docker的工作目录中
- 分为匿名挂载和具名挂载
- 匿名挂载即不指定数据卷名称,自动生成
- 具名挂载即手动指定数据卷名称
- 这种挂载方式,会将原镜像层中的文件同步到宿主机
匿名挂载:docker run -d --rm --name anony -P-v /etc/nginxnginx:latest
具名挂载:docker run -d --rm --name unanony -P-v nginx:/etc/nginxnginx:latest
可以通过 docker volume ls 查看数据卷
查看相应数据卷详细信息:docker volume inspect volume_name
查看挂载点目录,能够看到相应的文件(容器中的文件被同步到宿主机)
扩展:docker创建启动容器时,使用--volumes-from可以继承其它容器的数据卷挂载
#创建容器ng02,并继承容器ng01的挂载
docker run -d --rm --name ng02 -P--volumes-fromng01 nginx