一、什么是容器数据卷
Docker将运用与运行的环境打包形成容器运行, Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了。 为了能保存数据在Docker中我们使用卷。
卷就是目录或文件,存在于一个或多个容器中,由Docker挂载到容器,但卷不属于联合文件系统(Union FileSystem),因此能够绕过联合文件系统提供一些用于持续存储或共享数据的特性
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。
Docker容器卷的工作就是将docker容器数据通过映射进行备份+持久化到本地的主机目录。
二、常用命令
1、创建数据卷
docker volume create demo
2、查看所有的数据卷
docker volume ls
3、查看指定数据卷的信息
docker volume inspect demo
4、输出数据卷
docker volume rm demo 无法删除正在被使用的容器存在的数据卷
docker rm -v demo ... 命令用于删除已停止的容器,并且同时删除与容器关联的数据卷。
数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷 。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个命令。
5、清理数据卷
docker volume prune
Docker所有的数据卷默认挂载在宿主机 /var/lib/docker/volumes/ 目录下
三、docker镜像如何存储构建
1、docker histort
这将显示 ubuntu 镜像的构建历史,包括每个构建层的 ID、创建时间、所占用的空间大小以及构建命令等
2、Docker image inspect nginx
查看nginx镜像
将显示关于该镜像的详细信息,包括标签、镜像 ID、创建时间、挂载点、环境变量等等
GraphDriver(图形驱动程序)是 Docker 中的组件之一,用于管理容器镜像和容器的存储。它是 Docker 镜像和容器的存储驱动程序。
GraphDriver 在 Docker 中负责将文件系统提供给容器,以便容器可以在其上进行读写操作。它实际上是一个存储后端,负责管理镜像的增量存储和容器的写入操作
其中,LowerDir 是底层目录,包含小型 Linux 和装好的软件]
第一个是用户文件
第二个用户文件
第三个nginx启动命令
第四个nginx配置文件
第五小型linux文件系统
四、容器如何挂载卷
1、docker run -d -P -v /var/nginx/html:/usr/share/nginx/html nginx
将在后台模式下运行一个名为 “nginx” 的容器,并将主机的 /var/nginx/html目录挂载到容器的 /usr/share/nginx/html
-d:将容器设置为后台模式运行。
-P:将容器的公开端口随机映射到主机的高端口。
-v /var/nginx/html:/usr/share/nginx/html:将主机的 /var/nginx/html 目录挂载到容器的 /usr/share/nginx/html 目录。
这样挂载后,你可以在主机上的 /var/nginx/html 目录中放置静态网页文件,Nginx 将使用这些文件来提供服务
2、挂载卷
要将一个新建的数据卷挂载到指定的容器中,可以按照以下步骤进行操作:创建一个新的数据卷:
docker volume create mydata
此命令将创建一个名为 mydata 的新数据卷。运行容器并将新建的数据卷挂载到容器中:
docker run -d --name mycontainer -v mydata:/path/to/mount myimage
mycontainer 是要运行的容器的名称,myimage 是容器所使用的镜像,mydata 是之前创建的数据卷名称,/path/to/mount 是要将数据卷挂载到容器内的路径。
当运行该命令后,mydata 数据卷的内容将被挂载到 mycontainer 容器中的 /path/to/mount 路径下。