Docker190814随记

来自三线的随记
Admin讨论 | 贡献2019年8月14日 (三) 17:45的版本 (创建页面,内容为“=== 实验环境 === 宿主机:ubuntu 61.04 Docker version: 18.09.7 image: Ubuntu 18.04.2 在docker的实现技术上面提及到docker的文件系统与 AuFS…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

实验环境

宿主机:ubuntu 61.04

Docker version: 18.09.7

image: Ubuntu 18.04.2

在docker的实现技术上面提及到docker的文件系统与 AuFS有关

并且是由/var/lib/docker/aufs/diff/* 联合挂载到 /var/lib/docker/aufs/mnt/*

对于删除操作,不讨论resolv.conf hosts之类的文件这种特殊情况

删除文件或者文件夹以后,会在相应的/var/lib/docker/aufs/diff/*/xxxx 下面多了个.wh.***文件【whiteout】

开始搞事情

那么如果在宿主机在容器的可读写层手动创建.wh.xxx文件也可以做到在宿主机 模仿容器内部rm文件的操作

但是在容器里面无法创建.wh.xxx文件,提示 setting times of '.wh.xxxx': Operation not permitted

第三方教程解释说 -init 层存放的是 hosts resolv.conf 等信息 ,但是实际实验中发现,在容器当中更改了 hosts 文件后,更改后的内容不知道去哪了!!!

使用命令 cat aufs/diff/*/etc/hosts cat aufs/mnt/*/etc/hosts 返回信息均为空,无论是原本的文件内容还是修改后的都不见了【喵喵喵?】

AuFS挂载后对比

首先 aufs 的内部 id 【也叫 si 】是从 mount | grep 结果中得到的

然后根据 si 值去 cat /sys/fs/aufs/si_xxxxxx/br[0-9] 获得有关的 aufs 目录信息

在 aufs/diff/* 下面的文件夹通过联合挂载以后挂载到 aufs/mnt 下的一个目录,这个目录就是容器看到的文件系统,但是 aufs/mnt 目录之下同样会多了很多没有与 diff/* 下非可读写层的同名空目录,暂时不知道有啥用

挖坑待补 - 20190814,先这样