Docker数据卷 Volume 挂载,你可以理解为双向绑定,容器路径与linux主机路径的映射关系

2022/4/8 7:21:33

本文主要是介绍Docker数据卷 Volume 挂载,你可以理解为双向绑定,容器路径与linux主机路径的映射关系,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

本文参考:你必须知道的Docker数据卷(Volume)  【作者是阿里云最有价值MVP,第一次见到这个称呼~_~】

1.引言

docker的镜像是由多个只读的文件系统叠加在一起形成的。当我们在我启动一个容器的时候,docker会加载这些只读层并在这些只读层的上面(栈顶)增加一个读写层。这时如果修改正在运行的容器中已有的文件,那么这个文件将会从只读层复制到读写层。该文件的只读版本还在,只是被上面读写层的该文件的副本隐藏。当删除docker,或者重新启动时,之前的更改将会消失。在Docker中,只读层及在顶部的读写层的组合被称为Union File System(联合文件系统)。

为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。

在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中。目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中:说白了就是当我们删除容器时,为了保留容器运行期间产生的数据,通过数据卷volume技术,实现容器内部与linux主机上文件目录共享的技术。

2.数据卷

2.1、创建数据卷,新建的数据卷默认会放在linux主机的位置为: /var/lib/docker/volumes 目录中

docer volume create 数据卷名称

2.2、 查看数据卷

docker volume ls // 查看所有容器卷
docker volume inspect 数据卷名称  //查看数据卷详情

 

 

  2.3、删除数据卷

# docker stop edc-nginx // 暂停容器实例
# docker rm edc-nginx // 移除容器实例
# docker volume rm edc-nginx-vol // 删除自定义数据卷

创建使用指定卷的容器,也称之为挂载数据卷

docker run -it --name=centos01 -v myvol01:/home/centosvol01 centos /bin/bash

其中myvol01 为我们创建的数据卷 /home/centosvol01 为容器内路径 

如果不使用默认的数据卷存放路径,我们可以显式的指定一个本机路径,如下:

docker run -it --name=centos01 -v /home/share/centosvol01:/home/centosvol01 --name=centos002 centos /bin/bash

其中 /home/share/centosvol01 为本地路径  /home/centosvol01 为容器内路径

 2.4、查看容器是否数据卷挂载是否成功

docker inspect 容器ID

 

 此时,我们不管是在主机路径内新建一个文件,还是在容器内路径新建一个文件,都会展示到两个目录中。也可以理解为:这两个路径进行了双向绑定,或者一致性映射。

@天才卧龙的波尔克

 

 



这篇关于Docker数据卷 Volume 挂载,你可以理解为双向绑定,容器路径与linux主机路径的映射关系的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程