1.持久化的三种方式
1.1 volumes
Docker管理主机文件系统的一部分,默认文件夹在/var/lib/docker/volumes
中。是保存数据的最佳方式。
1.1 bind mounts
将宿主机的任意位置的文件或者目录挂在到容器中。
1.1 tmpfs
挂载存储到主机系统的内存中,不会写入到主机的文件系统。一般不会用到
2.volume方式
2.1 创建数据卷
docker volume create 容器卷名称
[root@VM-0-7-centos docker]# docker volume create wwwroot
wwwroot
2.2 删除数据卷
docker volume rm
[root@VM-0-7-centos docker]# docker volume rm wwwroot
2.3 查看数据卷
docker volume ls
[root@VM-0-7-centos docker]# docker volume ls
DRIVER VOLUME NAME
local wwwroot
2.4 查看数据卷元数据
docker volume inspect 卷名称
[root@VM-0-7-centos docker]# docker volume ls
DRIVER VOLUME NAME
local wwwroot
[root@VM-0-7-centos _data]# docker volume inspect wwwroot
[
{
"CreatedAt": "2021-08-30T16:53:49+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/wwwroot/_data",
"Name": "wwwroot",
"Options": {},
"Scope": "local"
}
]
2.5 使用数据卷创建容器
ocker container run --name nginx1 -d --mount src=wwwroot,dist=/usr/share/nginx/html nginx
#docker container run --name 容器名称 -d --mount src=本机卷名称,dst=容器中需要处久化存储的文件目录 镜像名称
[root@VM-0-7-centos _data]# docker container run --name nginx1 -d --mount src=wwwroot,dist=/usr/share/nginx/html nginx
如果没有指定数据卷,则会创建一个数据卷。
2.5 查询该容器的数据卷信息
docker container inspect nginx1 |grep -C 3 _data
[root@VM-0-7-centos _data]# docker container inspect nginx1 |grep -C 3 _data
{
"Type": "volume",
#数据卷名称
"Name": "wwwroot",
#数据卷在宿主机的目录
"Source": "/var/lib/docker/volumes/wwwroot/_data",
#需要处久化的docker容器目录
"Destination": "/usr/share/nginx/html",
"Driver": "local",
"Mode": "z",
bind mount
在使用–mount的时候加上 --mount type=bind
,其余命令一致。
4.volume特点和bind mount特点
详情请看博客volume和bind mount
4.1 volume
- 多个容器之间共享数据,多个容器可以挂载相同的卷
- 当容器停止或者被移除时,该卷依然存在
- 当明确删除卷时,卷才会被删除
- 将容器的数据存储在远程主机中(简介)
- 数据迁移的时候先备份
/var/lib/docker/volumes
4.2 bind mount
- 会覆盖容器内的文件
- 可以将宿主机的文件copy到容器中