zoukankan      html  css  js  c++  java
  • docker-存储驱动

    Docker 存储驱动 (storage driver) 是 Docker 的核心组件,它是 Docker 实现分成镜像的基础 
    他可以将多个文件组合在一起,给用户提供最上层,用户在最上层观看时他是一个整个的文件,对于文件系统来说他是多个零散的不同的文件,这就是分层文件系统的特点以及他的工作原理,因为有分层管理系统所以我才可以让镜像进行精简化,
    1、device mapper (DM):性能和稳定性存在问题,不推荐生产环境使用
     2、btrfs:社区实现了 btrfs driver,稳定性和性能存在问题
    3、overlayfs:内核 3.18 overlayfs 进入主线,性能和稳定性优异,老版本下不支持。

    image layer    镜像层
    Container layer    容器层
    Container mount     容器挂载
    对应OverlayFS层为lowerdir、upperdir、merged。
    这三层上分别对应的是。
    每一个竖线都是一个新的容器,第一个容器最底层或者说是镜像里有一个文件file1,容器没有开成任何东西,用户挂载这一层去看时只有file1,
    第二个容器镜像这一层有个file2,比如里面的是1,容器这一层里面也有个file2,里面写的是2,对于容器用户来说看到的就是2,
     
    挂载分层文件系统。
    [root@localhost volumes]# cd /tmp
    [root@localhost tmp]# mkdir overlay
    [root@localhost tmp]# cd overlay/
    [root@localhost overlay]# mkdir low upper work merged
    low    最底层
    upper    上一层
    work    工作缓存
    merged    用户的展现层或者叫挂载层。
    [root@localhost overlay]# mount -t overlay overlay -olowerdir=./low,upperdir=./upper,workdir=./work ./merged
    [root@localhost overlay]# mount |tail -1
    overlay on /tmp/overlay/merged type overlay (rw,relatime,seclabel,lowerdir=./low,upperdir=./upper,workdir=./work)
    挂载选项支持(即"-o"参数):
    1)lowerdir=xxx:指定用户需要挂载的lower层目录(支持多lower,最大支持500层);
    2)upperdir=xxx:指定用户需要挂载的upper层目录;
    3)workdir=xxx:指定文件系统的工作基础目录,挂载后内容会被清空,且在使用过程中其内容用户不可见;
    4)default_permissions:功能未使用;
    5)redirect_dir=on/off:开启或关闭redirect directory特性,开启后可支持merged目录和纯lower层目录的rename/renameat系统调用;
    6)index=on/off:开启或关闭index特性,开启后可避免hardlink copyup broken问题。

    挂载成功。

    [root@localhost overlay]# cd low
    [root@localhost low]# vi 1.txt
    
    111111111111111112322
    [root@localhost low]# cd ../upper/
    [root@localhost upper]# vi 2.txt
    
    lkdfjsdfklsdjfslkdfjsdlkf
    [root@localhost upper]# yum -y install tree
    [root@localhost upper]# cd ..
    [root@localhost overlay]# tree
    .
    ├── low
    │   └── 1.txt
    ├── merged
    │   ├── 1.txt
    │   └── 2.txt
    ├── upper
    │   └── 2.txt
    └── work
        └── work
    
    5 directories, 4 files

    low    最底层镜像层,        upper容器运行的空白层,        merged用户的挂载层。

    [root@localhost overlay]# cd merged/
    [root@localhost merged]# ls
    1.txt  2.txt
    [root@localhost merged]# cat 1.txt 2.txt
    111111111111111112322
    lkdfjsdfklsdjfslkdfjsdlkf
    内容是一模一样的

     修改1.txt

    [root@localhost merged]# echo "this is a merged" >> 1.txt
    [root@localhost merged]# cd ..
    [root@localhost overlay]# tree
    .
    ├── low
    │   └── 1.txt
    ├── merged
    │   ├── 1.txt
    │   └── 2.txt
    ├── upper
    │   ├── 1.txt
    │   └── 2.txt
    └── work
        └── work
    
    5 directories, 5 files
    [root@localhost overlay]# cat upper/1.txt
    111111111111111112322
    this is a merged
    [root@localhost overlay]# cat low/1.txt
    low/
    [root@localhost overlay]# cat low/1.txt    
    111111111111111112322    
    在最底层并未修改
    [root@localhost overlay]# cd merged/
    [root@localhost merged]# rm -rf 1.txt
    [root@localhost merged]# cd ..
    [root@localhost overlay]# tree 
    .
    ├── low
    │   └── 1.txt
    ├── merged
    │   └── 2.txt
    ├── upper
    │   ├── 1.txt
    │   └── 2.txt
    └── work
        └── work
    
    5 directories, 4 files

    1.txt还在,但是一个特殊的文件类型

    [root@localhost overlay]# cd upper/
    [root@localhost upper]# ls -l
    总用量 4
    c---------. 1 root root 0, 0 12月 30 13:52 1.txt
    -rw-r--r--. 1 root root   26 12月 30 13:47 2.txt

    1.txt代表文件已删除

    [root@localhost upper]# cd ../merged/
    [root@localhost merged]# ls
    2.txt
    如何还原。又回来了。
    [root@localhost merged]# cd ../upper/
    [root@localhost upper]# ls
    1.txt  2.txt
    [root@localhost upper]# rm -rf 1.txt
    [root@localhost upper]# ls
    2.txt
    [root@localhost upper]# cd ../merged/
    [root@localhost merged]# ls
    1.txt  2.txt
    [root@localhost upper]# cd ..
    [root@localhost overlay]# tree
    .
    ├── low
    │   └── 1.txt
    ├── merged
    │   ├── 1.txt
    │   └── 2.txt
    ├── upper
    │   └── 2.txt
    └── work
        └── work
    
    5 directories, 4 files
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    太湖杯WriteUp
    第九届网安竞赛writeup
    湖湘杯2020 writeup
    利用DNS缓存和TLS协议将受限SSRF变为通用SSRF
    十月学习计划
    2020GACTF部分wp
    2020 天翼杯 部分wp
    DASCTF 安恒七月赛wp
    开发步骤
    垃圾收集器与内存分配策略
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12119390.html
Copyright © 2011-2022 走看看