首页 > 技术文章 > docker3-容器数据卷

tensorzhang 2021-06-23 15:29 原文

1,什么是容器数据卷

  • 如果运行过程中的数据都保存在容器中,那么一但删除容器数据就会丢失,因此需要容器数据持久化;此外,容器之间也有数据共享的需求。

  • 容器数据卷技术的功能是将Docker容器中产生的数据同步到本地,本质是将容器内的目录挂载到宿主机上(目录的挂载,容器内的目录与宿主机的目录相绑定;绑定是双向的,容器发生变化宿主机随之变化,宿主机发生变化容器也会随之变化。)

  • 好处:

    • 数据备份
    • 容器之间数据共享
    • 挂在后修改文件只需本地修改,容器内自动同步

2,数据卷的使用

  • 使用命令挂载

    docker run -it -v 主机目录:容器目录							和-p类似
    是否成功可以通过 docker inspect 中的Mounts查看
    
    一个例子:
    docker run -it -v /home/ceshi:/home centos /bin/bash
    

  • 具名和匿名挂载

    匿名挂载
    docker run -v 容器目录									不指定名字就直接是容器内的目录
    docker volume ls									   查看所有卷的名称
    docker volume insepct 卷的名称							 查看卷的具体信息(其中Mountpoint就是卷的挂载位置)
    														(如果要看容器的挂在情况,docker inspect 容器id 看															Mounts)
    具名挂载(常用)
    docker run -v 名称:容器目录							   为容器内目录指定名称(名称不加/,与主机目录不同)
    													   我的服务器上,匿名和具名卷都挂载																		       在/var/lib/docker/volumes(不指定主机目录都在这)
    													   
    指定路径挂载
    docker run -v /主机路径:容器目录						  指定容器在主机的挂在路径(主机路径以/开头)
    
  • ro/rw 改变读写权限:一旦设置了权限,容器对挂载出来的内容就有限定了

    ro:read only											只读,该路径只能通过宿主机操作,容器内无法操作
    rw:read write											读写(默认),容器对宿主机上的该路径可操作
    
    例子
    docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:ro nginx
    
  • 多个容器数据同步(数据卷容器)

    docker run --volumes-from 容器id 镜像
    

    概念

    本质

推荐阅读