一、概述

1、Docker底层存储机制

Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。

如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏,此即“写时复制(COW)”机制。这种机制在访问和使用时效率会非常的低。

写时复制机制是:如果一个文件在最底层是存在的,在任意层中被标记为删除,那么用户最上层就看不到这个文件了。用户能看到的只能是没被标记为删除的或者被标记为删除而用户在最上层又自己创建了同名的文件。

docker容器存储机制存在的问题:存储于联合文件系统中,不易于宿主机访问;容器间共享数据不便;删除容器数据会丢失。

解决方案:卷(Volume),是容器上的一个或多个“目录”,此类目录可绕过联合文件系统与宿主机上的某个目录“绑定(关联)”。

2、存储卷(Volume)

所谓存储卷可以简单想象成在特权级的名称空间(宿主机)当中找一个本地文件系统之上存在某一个目录,把这个目录直接与容器内部的文件系统之上的某一个目录建立绑定关系。

Volume的初衷是独立于容器的生命周期实现数据持久化,因此删除容器时默认不会删除卷,也不会对未被引用的卷做垃圾回收。可指定删除容器时一并删除存储卷。

docker的存储卷默认是使用容器所在的宿主机所在的本地文件磁盘目录。可以在宿主机上挂载一个NFS文件目录,然后容器去使用这个目录。

二、常见操作

1、docker volume的两种类型

绑定挂载卷:同时指定docker目录和宿主机上绑定的目录。容器销毁后宿主机上的目录默认不会删除。

[root@oracle ~]# docker container run --name b1 -v /data/volumes/b1:/data --rm -it busybox:latest #如果宿主机上的目录不存在,docker会自动创建
[root@oracle ~]# docker container inspect b1

docker管理的卷:指定docker容器中的目录,宿主机上的目录由docker在某一特定目录下自动创建。容器销毁后宿主机上的目录默认会删除(可能与版本有关)。

[root@oracle ~]# docker container run --name b1 -v /data --rm -it busybox:latest
[root@oracle ~]# docker container inspect b1
[root@oracle ~]# docker container inspect -f {{.Mounts}} b1 #过滤出Mounts字段

2、共享存储卷

  • 两个容器同时与宿主机的同一个目录建立关联关系,两个容器之间就可以共享数据了。
  • 启动新的容器时复制一个已存在容器的存储卷路径。
[root@oracle ~]# docker container run --name b1 -v /data/volumes/b1:/data --rm -it busybox:latest
[root@oracle ~]# docker container run --name b2 --volumes-from=b1 --rm -it busybox:latest
[root@oracle ~]# docker container inspect -f {{.Mounts}} b2

5.Docker存储卷的更多相关文章

  1. Docker系列05—Docker 存储卷详解

    本文收录在容器技术学习系列文章总目录 1.存储卷介绍 1.1 背景 (1)docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加面成,启动容器时,docker会加载只读镜像层并在镜 ...

  2. 6、Docker存储卷

    Why Data Volumes?  来自马哥教育 Data volumes Volume types  绑定挂载卷:在宿主机和容器上各指明绑定路径才能进行绑定. docker管理卷:在容器内指定挂载 ...

  3. Docker存储卷(V18.X)

    简介 介绍 Docker的存储卷称之为volume,本质上容器上的一个或者多个目录,而这些目录绕过了联合文件系统,与宿主机中的目录或者其他容器目录进行了绑定关系,这种绑定关系可以看作Linux的mou ...

  4. Docker存储卷

    六.Docker 存储卷(volume) COW:写时复制 Bind mount volume:手动mount绑定的卷 # docker run --name centos-3 -it -v /dat ...

  5. docker 存储卷 Volumes

    一,docker容器面临的困境: 容器运行中产生的数据,是放到容器栈的最顶层,当容器停止并被删除后,这些数据就被删除了. docker采用COW(写时复制)策略,导致性能低下.比如有个mysql容器, ...

  6. Docker存储卷篇

    Docker存储卷篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.    一.写时复制(COW)机制 所谓写时复制的效果如上图所示: Docker镜像由多个只读层叠加而成,启动容器 ...

  7. Docker 学习6 Docker存储卷

    一.什么是存储卷 二.为什么要用到数据卷 三.数据卷是怎么被管理的 四.存储卷种类 五.在容器中使用存储卷 1.只声明容器路径 [root@localhost docker]# docker run ...

  8. Docker系列03—Docker 存储卷

    一.存储卷介绍 1.1 背景 Docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加而成,启动容器时,docker会加载只读镜像层并在镜像栈顶部加一个读写层: 如果运行的容器修改了 ...

  9. 你必须知道的Docker数据卷(Volume)

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 一.将Docker数据挂载到容器 在Docker中,要想实现数据的持久化(所谓 ...

随机推荐

  1. AWK之随心所欲-基础篇

    一.简介 awk 是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件.数据排序.计算以及 生成报表等等. 在 Linux 系统下默认 awk 是 gawk,它是 awk 的 GNU 版本. ...

  2. jmeter之分布式压测

    很多性能大牛说一台机器的压测其实不准确,于是搜索网上的分布式压测练习了一番 目录 1.环境准备 2.控制机和压测机配置 3.执行分布式压测 1.环境准备 1.1准备一台windows作为控制机(mas ...

  3. R语言中的几种数据结构

    R语言中的几种数据结构 一  R中对象的5种基本类型 字符(character) 整数 (integer) 复数(complex) 逻辑(logical:True/False) 数值(numeric: ...

  4. MFC下一个通用非阻塞的等待执行结束的对话框类

    头文件:CPictureEx用于显示一个等待动画 #pragma once #include "afxwin.h" #include "resource.h" ...

  5. 07 oracle 归档模式 inactive/current redo log损坏修复--以及错误ORA-00600: internal error code, arguments: [2663], [0], [9710724], [0], [9711142], [], [], [], [], [], [], []

    07 oracle 归档模式 inactive/current redo log损坏修复--以及错误ORA-00600: internal error code, arguments: [2663], ...

  6. Java ——Scanner

    本节重点思维导图 import java.util.Scanner;//导包 public class Demo { public static void main(String[] args) { ...

  7. linux安装 redis(redis-3.0.2.tar.gz) 和 mongodb(mongodb-linux-x86_64-rhel62-4.0.0)

    1:首先 要下载 这两个 压缩包 注意:liunx是否已经安装过 gcc没安装的话 先安装:yum install gcc-c++ 2:安装 redis:redis-3.0.2.tar.gz (1): ...

  8. 前端 CSS的选择器 基本选择器

    基本选择器包括: 标签选择器 类选择器 ID选择器 通用选择器 标签选择器 就是通过标签名来选择元素: 选中p标签 <!DOCTYPE html> <html lang=" ...

  9. [19/05/13-星期一] HTML_head标签 和 body标签_文本标签

    一.概念 概念:超文本标记语言 作用:需要将Java在后台根据用户的请求处理结果在浏览器显示给用户.数据已经过来了,但是显示可能比较凌乱,所以html应用而生,就像写作文要加标点看着舒服. 在浏览器中 ...

  10. iBatis框架之配置文件之注意点之总结

    1.配置文件sqlMap.xml中需要注意的点 比如: <?xml version="1.0" encoding="UTF-8" ?> <!D ...