前面我们介绍了镜像和容器,通过镜像我们可以启动多个容器,但是我们发现当我们的容器停止获取删除后,我们在容器中的应用的一些数据也丢失了,这时为了解决容器的数据持久化,我们需要通过容器数据卷来解决这个问题,本文我们就来介绍下容器数据卷。
1.是什么
Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们使用卷。简单来说,容器卷就相当于Redis中持久化方式的RDB和AOF。
2.解决了什么问题
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷
特点:
- 数据卷可在容器之间共享或重用数据
- 卷中的更改可以直接生效
- 数据卷中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用它为止
持久化,容器间继承和共享数据
3.数据卷
首先我们来看看数据卷的使用方式
3.1 直接命令添加
3.1.1 挂载数据卷
添加的命令
docker run -it -v /宿主机绝对路径:/容器内目录 镜像名

我们发现执行了该命令后,在宿主机中会添加mydatavolume文件夹,同时在容器中的根目录中也有了datavolumecontainer文件夹。

这表示数据卷挂载成功了。同时我们也可以通过前面介绍的 docker inspect 容器名称ID来查看容器的 json数据

3.1.2 数据共享操作
数据卷挂载成功后,我们来看看容器和宿主机之间的数据共享,我们先在宿主机的mydatavolume目录中创建一个文件。然