什么是容器数据卷

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

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

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

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

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

数据的覆盖问题

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

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

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

使用数据卷

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

docker run -it -v 主机目录:容器内目录

docker run -it -v /home/test:/home centos /bin/bash

docker inspect 命令查看容器信息

测试挂载卷

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

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

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

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

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、 查看数据卷文件

方式二: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.

具名挂载/匿名挂载

匿名挂载

-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 inspect 容器ID

方式二:docker volume inspect juming-nginx

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

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

挂载三种方式

# 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 : 说明这个路径只能通过宿主机来操作,容器内无法操作


我是 甜点cc

热爱前端,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚,等待着一个创业机会。本号主要致力于分享个人经验总结,希望可以给一小部分人一些微小帮助。

希望能和大家一起努力营造一个良好的学习氛围,为了个人和家庭、为了我国的互联网物联网技术、数字化转型、数字经济发展做一点点贡献。数风流人物还看中国、看今朝、看你我。

Docker | 容器数据卷详解的更多相关文章

  1. 『现学现忘』Docker基础 — 28、Docker容器数据卷介绍

    目录 1.什么是Docker容器数据卷 2.数据卷的作用 3.数据卷的使用 1.什么是Docker容器数据卷 Docker容器数据卷,即Docker Volume(卷). 当Docker容器运行的时候 ...

  2. Docker容器数据卷-Volume详解

    Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume).数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享.数据 ...

  3. docker 12 docker容器数据卷

    数据卷概念 ♣我们知道,当我们把一个运行中的容器关闭后,容器里的数据就没有了(如果你做了docker commit操作,数据会保留到新的镜像里面).所以我们就需要用容器数据卷把容器数据进行持久化储存. ...

  4. Docker容器数据卷

    ⒈Docker容器中数据如何持久化? ①通过commit命令使容器反向为镜像 ②以容器数据卷的方式将数据抽离 ⒉容器数据卷的作用? ①容器数据的持久化 ②容器间继承.共享数据 ⒊能干嘛? 卷就是目录或 ...

  5. Docker容器数据卷(七)

    Docker致力于: 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 容器之间希望有可能共享数据 Docker容器产生的数据,如果不通过docker co ...

  6. 5、docker容器数据卷: -v添加共享传递容器数据卷

    1.是什么 1.docker理念 先来看看Docker的理念:*  将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的*  容器之间希望有可能共享数据 2.保 ...

  7. Docker 容器数据卷(Data Volume)与数据管理

    卷(Volume)是容器中的一个数据挂载点,卷可以绕过联合文件系统,从而为Docker 提供持久数据,所提供的数据还可以在宿主机-容器或多个容器之间共享.通过卷,我们可以可以使修改数据直接生效,而不必 ...

  8. docker学习笔记-04:docker容器数据卷

    一.容器数据卷是什么 1.为了保存docker容器运行时产生的数据,做数据的持久化,我们需要用到容器数据卷.因为如果不通过docker commit 生成新的镜像,那么当容器被删除时,数据自然就没有了 ...

  9. 『现学现忘』Docker基础 — 29、Docker容器数据卷的应用

    目录 1.验证容器和宿主机之间数据共享 2.容器停止退出后,主机修改后数据是否同步 3.带只读权限的挂载数据卷 1.验证容器和宿主机之间数据共享 通过上面的操作,接下来我们演示一下通过数据卷的挂载,实 ...

随机推荐

  1. php date函数和首位带0问题

    一.带零 echo date('Y-m-d'); 2012-08-08 二.不带零 echo date('Y-n-j'); 2012-8-8 以下为参数详解(转载): a - "am&quo ...

  2. php命名空间粗解

    // 创建命名空间Articlenamespace Article;class Comment { } // 创建命名空间MessageBoardnamespace MessageBoard;clas ...

  3. MyBatis-知识点详解

    Mybatis 中$与#的区别 1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的 ...

  4. 【原创】JS文件替换神器--Chrome ReRes插件

    本文仅供学习交流使用,如侵立删! JS文件替换神器--Chrome ReRes插件 ReRes插件安装配置 ReRes项目官方地址:https://github.com/annnhan/ReRes 谷 ...

  5. Spring AOP全面详解(超级详细)

    如果说 IOC 是 Spring 的核心,那么面向切面编程AOP就是 Spring 另外一个最为重要的核心@mikechen AOP的定义 AOP (Aspect Orient Programming ...

  6. 【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法

    问题描述 在App Service for Windows的环境中,当前只提供了PHP 7.4 版本的选择情况下,如何实现自定义PHP Runtime的版本呢? 如 PHP Version 8.1.9 ...

  7. iOS白嫖系列Testflight

    1.Picsart 白嫖一年会员 使用 Picsart 照片编辑器和视频编辑器,您可以将您的创意变为现实.制作专业级拼贴画.设计和添加贴纸.快速移除和交换背景.尝试热门编辑,如黄金时段.镜子自拍和复古 ...

  8. 无密码正向直连内网linux目标机复现

    无密码正向直连内网linux目标机复现 文章来自sxf大佬klion https://mp.weixin.qq.com/s/GPPvci8qKuvc5d3Q7Cer7Q 场景说明 前期通过一些 Rce ...

  9. 2020/12/9 酒etf

    2020/12/9 2.315建仓酒etf,之后陆续加仓,拿到年底看看 2020/12/12 2.36卖出部分,目前成本2.106,盈利百分之9.449,白酒应该是没问题,但感觉年前应该有波调整. 2 ...

  10. k8s手动扩缩容

    1. 查询deploy副本数,ready数表示副本数 kubectl get deploy 2.通过命令直接扩容或者缩容,--replicas=1表示把my-dep缩容到副本数1,--replicas ...