Docker容器数据卷入门教程(超详细)

艺帆风顺 发布于 2025-04-03 18 次阅读


概念

什么是数据卷?
    docker的理念将运行的环境打包形成容器运行,运行可以伴随容器,但是我们对数据的要求是希望持久化,容器之间可以共享数据,Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为容器的一部分保存下来,那么当容器被删除之后,数据也就没了。为了能够保存数据,在docker容器中使用卷。卷就是目录或者文件,存在于一个或者多个容器中,但是不属于联合文件系统,因此能够绕过Union File System提供一些用于持久化数据或共享数据的特点。
功能及特点
    卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷数据卷特点:
1、数据卷可在容器之间共享或重用数据
2、数据卷中的更改可以直接生效
3、数据卷中的更改不会包含在镜像的更新中
4、数据卷的生命周期一直持续到没有容器使用它为止

使用数据卷

注意:所有docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxxx/_data
方法一 直接使用命令挂载
命令:docker run -it -v 主机目录:容器内目录
启动容器

ubuntu@VM-4-3-ubuntu:~$ sudo docker run -it --name="centos01" -v /home/docker-centos:/home centos

启动后通过命令docker inspect 容器id查看具体信息

测试文件的同步

进一步测试,进行以下操作

1停止正运match行的docker容器
2在宿主机上修改文件test.java,写入hello docker from docker-centos
3启动刚刚停止的容器
4查看容器内的数据是否会同步

总结:容器的持久化和同步操作,容器间也可共享

方法二 匿名挂载
命令:docker run -it -v 容器内路径
以nginx为列,启动容器docker run -d -P --name nginx01 -v /etc/nginx nginx
容器启动后,使用命令doocker inspect  容器id查看一下元数据,可以看到卷的位置如下图


方法三 具名挂载
命令:docker run -it -v 卷名:容器内路径
启动容器   docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx使用命令doocker inspect 容器id查看一下元数据,可以看到卷的位置如下图


总结
    如何确定试具名挂载还是匿名挂载,还是指定路径挂载

    -v 容器内路径 #匿名挂载-v 卷名:容器内路径 #具名挂载-v /宿主机路径:容器内路径 #指定路径挂载

    扩展(读写权限)

        通过-v容器内路径:rorw改变读写权限

      ro readonly #只读rw readwrite #可读可写
      #一旦这个设置了容器权限,容器对挂载出来的内容就限定了$ sudo docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx$ sudo docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

      只要设置了ro说明这个路径只有通过宿主机来操作,容器内无法操作

      数据卷容器
      可实现多个容器的数据同步,比如多个mysql数据库同步数据
      准备
      1、启动一个centos容器,命名为bbx-centos01,做为父容器
           2、创建两个新文件夹volume01volume02这里的bbx-centos是在原有centos镜像制作的

      启动子容器bbx-centos02继承--volumes-from父容器bbx-centos01

      测试1.在centos01中volume01创建一个docker的文件,看centos02是否同步2.在centos02中volume01创建一个docker2的文件,看centos01是否同步

      容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用。

        版权声明:本文内容始发于支付宝开放平台>作者:一只努力的笨笨熊,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。始发链接:https://open.alipay.com/portal/forum/post/142001031在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,商业转载建议请联系原作者,非商业转载请注明出处。