Docker中容器数据卷详解

2023-12-01 0 662
目录
  • 什么是容器数据卷
  • 数据的覆盖问题
  • 使用数据卷
    • 方式一:直接使用命令挂载 -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中容器数据卷详解的文章就介绍到这了,更多相关Docker容器数据卷内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

      收藏 (0) 打赏

      感谢您的支持,我会继续努力的!

      打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
      点赞 (0)

      悠久资源 Linux服务器 Docker中容器数据卷详解 https://www.u-9.cn/server/linux/2289.html

      常见问题

      相关文章

      发表评论
      暂无评论
      官方客服团队

      为您解决烦忧 - 24小时在线 专业服务