docker-存储驱动

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

docker-存储驱动第1张

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
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

免责声明:文章转载自《docker-存储驱动》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇批处理命令学习(二)Cadence 电源完整性仿真实践(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

H5系列一、静态页面总结

1、img父标签设置高度,如果容器没有设置高度的话,图片会默认把容器底部撑大几像素 -- 大概3px,给容器设置高度。 2、input标记换行后默认有一个间隙,设置float属性。input标记默认还有边框(2px),清除边框border:none/0。 3、搜索栏 <form> <input placeholder="SEARCH.....

如何将docker升级到最新版本

如何将Docker升级到最新版本 1、查找主机上关于Docker的软件包# rpm -qa | grep docker – – 列出包含docker字段的软件的信息docker-1.13.1-53.git774336d.el7.centos.x86_64docker-client-1.13.1-53.git774336d.el7.centos.x86_64...

Spring源码阅读-IoC容器解析

目录 Spring IoC容器 ApplicationContext设计解析 BeanFactory ListableBeanFactory HierarchicalBeanFactory MessageSource ApplicationEventPublisher EnvironmentCapable ResourceLoader和Resour...

(十七)VMware Harbor 垃圾清理

1. 在线垃圾清理 注意:从Harbor中删除镜像时不释放空间,垃圾收集是通过从清单中不再引用文件系统中删除blob来释放空间的任务。 注意:在执行垃圾收集时,Harbor将进入只读模式,并且禁止对docker注册表进行任何修改。 垃圾清理定时任务: 1.无 2.每天 3.每周 4.每小时 5.自定义 history 显示垃圾回收记录    离线-H...

Docker中运行MySQL5.7并挂载宿主机目录到镜像

目录 1.1 拉取mysql镜像 1.2 创建用于挂载的目录 1.3 使用镜像创建容器 1.4 命令解析: 1.5 进入容器 正文 回到顶部 1.1 拉取mysql镜像 回到顶部 1.2 创建用于挂载的目录 回到顶部 1.3 使用镜像创建容器 回到顶部 1.4 命令解析: --name:容器名 --p:映射宿主主机端口 -v:挂载...

Centos7 Docker安装部署Rancher1.6

Rancher简介 Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。主要包括服务管理,公有云节点管理,支持第三方用户权限管理,应用商店,api很是灵活,只是文档较少,让你更多...