欢迎来到站长天空!

其它服务器

当前位置: 主页 > 服务器 > 其它服务器

Docker中容器数据卷详解

时间:2025-12-14 07:30:04|栏目:其它服务器|点击:

目录
  • 什么是容器数据卷
  • 数据的覆盖问题
  • 使用数据卷
    • 方式一:直接使用命令挂载 -v
      • 测试挂载卷
    • 方式二:Dockerfile文件
      • 数据卷命令
    • 查看数据卷
      • 方式一:docker inspect 容器ID
      • 方式二:docker volume inspect juming-nginx
    • 挂载三种方式
    • 扩展

      什么是容器数据卷

      从docker的理念说起,docker将应用和环境打包成一个镜像,运行镜像(生成容器)就可以访问服务了。

      如果数据都存在容器中,那么删除容器,数据就会丢失!需求:数据可以持久化 MySQL容器删了,就相当于删库了。需求:MySQL数据可以本地存储

      容器之间可以有一个数据共享的技术,docker容器产生的数据同步到本地或者别的地方。

      这就是数据卷技术,就是目录挂载,将容器内的目录,挂载到虚拟机上或者Linux上

      Docker中容器数据卷详解

      目的:实现容器数据的持久化和同步操作。容器间也可以数据共享

      数据的覆盖问题

      如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。

      如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。

      这两个规则都非常重要,灵活利用第一个规则可以帮助我们初始化数据卷中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。

      使用数据卷

      方式一:直接使用命令挂载 -v

      docker run -it -v 主机目录:容器内目录
      
      docker run -it -v /home/test:/home centos /bin/bash

      docker inspect 命令查看容器信息

      Docker中容器数据卷详解

      测试挂载卷

      1、在容器内部修改文件同步到Linux主机上

      进入容器,在/home目录下创建123.sh文件

      Docker中容器数据卷详解

      主机内可以查看在容器内部创建的文件

      Docker中容器数据卷详解

      2、同样地,在Linux上修改挂在卷文件可以同步到容器内部

      Docker中容器数据卷详解

      3、停止容器,修改Linux主机上的文件,同步到容器内

      # 1、停止容器
      exit
      
      # 2、查看容器是否还在运行
      docker ps
      
      # 3、在Linux主机上修改对应目录的文件
      
      # 4、启动容器并查看
        
        # 4.1、 查看历史运行的容器
        docker ps -a
        
        # 4.2、 启动容器
        docker start CONTAINER ID
        
        # 4.3、 进去容器
        docker attach CONTAINER ID
        
        # 4.4、 查看数据卷文件

      Docker中容器数据卷详解

      方式二:Dockerfile文件

      请查看下一章节

      数据卷命令

      docker volume
      
      docker volume --help
      Usage:  docker volume COMMAND
      Manage volumes
      Commands:
        create      Create a volume
        inspect     Display detailed information on one or more volumes
        ls          List volumes
        prune       Remove all unused local volumes
        rm          Remove one or more volumes
      
      Run 'docker volume COMMAND --help' for more information on a command.

      Docker中容器数据卷详解

      具名挂载/匿名挂载 匿名挂载

      -v 容器内路径
      -P 自动分配端口号
      
      docker run -d -P --name nginx02 -v /etc/nginx nginx

      具名挂载

      -v 卷名:容器内路径
      docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx nginx

      Docker中容器数据卷详解

      查看数据卷

      方式一:docker inspect 容器ID

      Docker中容器数据卷详解

      方式二:docker volume inspect juming-nginx

      Docker中容器数据卷详解

      查看Linux主机docker工作目录 /var/lib/docker

      所有docker容器内的卷,没有指定目录的情况下都是存放在 /var/lib/docker/volumes/xxx/_data 目录下

      Docker中容器数据卷详解

      挂载三种方式

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

      扩展

      给挂载的数据卷增加读写权限控制

      通过 -v 容器内路径, ro rw 改变读写权限

      ro readonly 只读

      rw readwrite 可读写

      # 一旦设置了容器权限,容器对我们挂载出来的内容就有限定了
      
      docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:ro nginx
      docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:rw nginx

      ro : 说明这个路径只能通过宿主机来操作,容器内无法操作

      上一篇:Docker教程之dockerfile构建centos镜像

      栏    目:其它服务器

      下一篇:Docker制作tomcat镜像并部署项目

      本文标题:Docker中容器数据卷详解

      本文地址:https://zz.feitang.co/server/30738.html

      广告投放 | 联系我们 | 版权申明

      申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

      如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

      联系QQ:257218569 | 邮箱:257218569@qq.com

      Copyright © 2018-2025 站长天空 版权所有 Powered by EyouCms冀ICP备14023439号