Volume 的作用
Docker的数据持久化主要使用Volume。
Docker的数据持久化即使数据不随着Container的结束而结束,数据存在于host机器上。
使用Volume的优势
- Volume可以在容器之间,以及容器和主机之间共享和重用数据。
- Volume在某一挂载的位置被修改,所以使用该Volume的地方都会同时更新。
- Volume的大小不会被加到容器本身上,存储空间是独立于容器的。
- Volume会一直存在,直到没有任何容器使用它,才能使用命令
docker volume rm [volumes name]
删除数据卷。
如何使用Volume
Volume也是绕过Container的文件系统,直接将数据写到host机器上,只是Volume是被Docker管理的,Docker下所有的Volume都在host机器上的指定目录下/var/lib/docker/volumes。
将my-volume挂载到Container中的/mydata目录:
➜ ~ docker run -it -v my-volume:/mydata hello-world
查看Volume信息
➜ ~ docker volume inspect my-volume
[
{
"CreatedAt": "2020-08-12T08:12:44Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/my-volume/_data",
"Name": "my-volume",
"Options": null,
"Scope": "local"
}
]
可以看到,Volume在host机器的目录为/var/lib/docker/volumes/my-volume/_data。
此时,如果my-volume不存在,那么Docker会自动创建my-volume,然后再挂载。
创建匿名Volume
也可以不指定host上的Volume,将匿名Volume挂载到Container中的/mydata目录:
➜ ~ docker run -it -v /mydata hello-world
创建命名的Volume
docker volume create --name [volumes name]
➜ ~ docker volume create --name my-data
查看所有数据卷,可看到自己创建的Volume my-data。
➜ ~ docker volume ls
local my-data
local my-volume
查看数据卷
登录到docker虚拟机中查看数据卷
执行:
➜ ~ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
然后你会看到一个新的命令行,请按下回车,此时你就在Docker host虚拟机中了。
就是my-volume这个Volume的
➜ ~ cd /var/lib/docker/volumes/my-volume/_data