1、数据卷产生背景
Docker的镜像是由一系列的只读层组合而来,当启动一个容器时,Docker加载镜像的所有只读层,并在最上层加入一个读写层。这个设计使得Docker可以提高镜像构建、存储和分发的效率,节省了时间和存储空间,然而也存在一些问题:
- 容器中的文件在宿主机上存在形式复杂,不能在宿主机上很方便地对容器中的文件进行访问。
- 多个容器之间的数据无法共享
- 当删除容器时,容器产生的数据将丢失。
为了解决这些问题,Docker引入了数据卷(volume)机制。Volume 是存在于一个或多个容器中的特定文件或文件夹,这个目录以独立于联合文件系统的形式在宿主机中存在,并为数据的共享和持久化提供便利。
- volume 在容器创建时就会初始化,在容器运行时就可以使用其中的文件。
- volume 能在不同的容器之间共享和重用。
- 对volume中数据的操作会马上生效。
- 对volume中数据的操作不会影响镜像本身。
- volume的生存周期独立于容器的生命周期,即使删除容器,volume仍然会存在,没有任何容器使用的volume也不会被Docker删除。
2、数据卷的使用
Usage: docker volume COMMAND
Manage volumes
Commands:
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused local volumes
rm Remove one or more volumes
2.1、创建数据卷
创建一个名为 vol_simple的存储卷:
docker volume create --name vol_simple
查看数据卷的信息:
docker volume inspect vol_simple
示例:
king@king-server:~$ docker volume inspect vol_simple
[
{
"CreatedAt": "2024-01-27T11:37:11Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/vol_simple/_data",
"Name": "vol_simple",
"Options": null,
"Scope": "local"
}
]
Docker run 和 docker create 通过指定-v参数 可以为容器挂载一个数据卷。
#没有指定volume卷,只指定了容器中的挂载点/data
docker run -d -it -v /data ubuntu /bin/bash
# 查看随机创建的volume位置,查看mounts的内容
docker inspect {
ID}
# 创建一个指定名字的volume ,并