docker系列(四)————容器数据卷
1、容器数据卷介绍。
docker容器在产生数据的时候,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除之后,数据自然而然的也会消失。为了能保存数据,容器中引用了数据卷的概念。
2、作用以及特点。
卷就是目录或者文件,存在一个或者多个容器之中,由docker挂载到容器,但是不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或者共享数据的特性。
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此docker不会再容器删除时删除其挂载的数据卷。
它还存在以下几种特点:
1、数据卷可在容器之间共享或者重用数据。
2、卷中的更改可以直接生效。
3、数据卷中的更改不会包含在镜像的更新中。
4、数据卷的生命周期一直持续到没有容器使用它为止。
再说简单点:方便我们将数据导出来,在删除原本的容器后将其中可用的数据与新的容器对接。
比如 容器a的数据目录挂载在宿主机home下,两处数据同步,a删除后,直接将b新建容器的数据目录再挂载在宿主机home下,同步数据,便能少去数据复刻步骤
3、使用数据卷。
(1):直接使用 -v 命令挂载
1 |
|
创建一个centos容器,并且打开其终端界面,然后将容器centos系统的/home目录挂载到宿主机的/home/test01上
1 |
|
另外打开一个终端查看宿主机home路径下是否出现test01目录,这个test01目录,就是我们刚启动容器centos的home目录,并且,此时这两个目录是同步的状态,我们在home目录中写入任何新的文件,都会同步到宿主机/home/test01下,注意是双向同步的。
(2):测试同步
1 |
|
当然,我们可以使用更简单的方法查看是否挂载成功
首先记住这个命令
1 |
|
我们找到Mounts,它代表着挂载,type是类型(绑定),source是源(/home/test01),也就是把什么挂载到哪里。destination(home)就是挂载的目标路径了。
这里bote只演示修改容器内文件同步到宿主机挂载文件。反过来也是一样的,这里就不再赘述了。之后如果要修改容器内挂载文件,只需在我们本地挂载点修改就好了,它会自动同步到docker。
##### 更改方法将在下一篇文章补充给大家。
4、具名挂载与匿名挂载。
首先记住这个
1 |
|
(1)匿名挂载
我们首先使用匿名挂载的命令启动一个容器。
1 |
|
然后使用docker volume ls 查看,那一长串就是挂载到宿主机的名字。
1 |
|
然后输入/Mounts, “ / ”后是你想查到的内容
大家仔细看一下,是不是/etc/nginx就是那一长串,挂载到了我/var/lib…路径下,复制一下路径去看一下即可。
(2)具名挂载
具名挂载就很简单了,与匿名挂载类似
同样,我们使用具名挂载的方式启动一个容器。
1 |
|
这时我们发现它的Name:jumingguazai,这个也就是我们设置的挂载名
这就是具名挂载。
(3)如何确定是具名挂载还是匿名挂载
1 |
|
1 |
|
最后
好的,大家下期 Dockerfile 再见。