目录
1.1什么是docker容器数据卷
docker将应用与其运行的环境打包形成容器运行, Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了。 卷的目的是为了保存docker容器内的数据。
卷就是目录或文件,存在于一个或多个容器中,由Docker挂载到容器,但卷不属于联合文件系(Union FileSystem),因此能够绕过联合文件系统提供一些用于持续存储或共享数据的特性。
1.2 容器数据卷能做什么
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷
数据卷的特点:
- 数据卷可在容器之间共享或重用数据
- 卷中的更改可以直接生效
- 数据卷中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用它为止
2.1卷的简单使用
运行容器,指定挂载数据卷命令:
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
将主机目录/home/mysqltest和容器/home建立数据卷,首先在容器目录下创建1.txt和2.txt文件,再去主机目录下查看是否有该文件。
在容器内删除1.tx他,主机目录下的1.txt同样被删除。
但是在主机目录下不能删除2.txt和新建3.txt文件。原因:使用docker启动的容器默认是用的root权限,但是docker中的root只是相当于普通用户,所以需要给挂载的目录或者文件开启权限
#开启目录权限
chmod a+rwx “需要挂载的目录”
#开启docker挂载权限
chmod a+rw “需要挂载的文件”
即使容器停止运行或者容器删除,仍然可以实现数据同步,本地的数据卷不会丢失
查看容器对应元数据docker inspect 容器id
,可以在Mounts节点查看建立的数据卷信息。
3.数据卷的常用命令
docker volume --help
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 lo