标签:需要 执行 err 包含 gre 运行 res 运行时 tps
docker使用的文件系统经过很多变化,而且各发行版可能不同。
执行docker info
查看当前使用的是overlay2
sudo docker info | grep Storage
Storage Driver: overlay2
除了 overlay,类似有rootfs, aufs (ubuntu), devicemapper(centos),过气的btrfs
他们都有2个目的:
写时复制 copy-up 会导致第一次写时造成延迟,特别是大文件,拷贝起来费时。 但第二次就不会延时, 而且overlay2 有caching, 相比其它文件系统,更减少延时
touch /var/lib/rpm/*
我理解就是将分离的多个目录挂载到一起的技术。
例如对docker 容器的文件进行增删改后,再commit, 会多一层layer。
再当docker 容器启动时,会自动挂载多层layer。
组织: overlay对运行的实例通过元数据组织文件, 是否是link文件
ls 04ea1faa8074e5862f40eecdba968bd9b7f222cb30e5bf6a0b9a9c48be0940f2/
diff link lower merged work
.
├── A
│?? ├── aa
│?? └── a.txt
├── B
│?? ├── a.txt
│?? └── b.txt
├── C
│?? └── c.txt
└── worker
└── work [error opening dir]
sudo mount -t overlay overlay -o lowerdir=A:B,upperdir=C,workdir=worker /tmp/test/
/tmp/test/
├── aa
├── a.txt
├── b.txt
└── c.txt
mount | grep ‘overlay‘
overlay on /tmp/test type overlay (rw,relatime,lowerdir=A:B,upperdir=C,workdir=worker)
当运行docker容器时查看挂载
overlay on /var/lib/docker/overlay2/04ea1faa8074e5862f40eecdba968bd9b7f222cb30e5bf6a0b9a9c48be0940f2/merged type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/B74PWZCBMRCWXFH5UL2ZXB5WEU:/var/lib/docker/overlay2/l/WNHICVPVSDNUGSCZW435TPSMOK,upperdir=/var/lib/docker/overlay2/04ea1faa8074e5862f40eecdba968bd9b7f222cb30e5bf6a0b9a9c48be0940f2/diff,workdir=/var/lib/docker/overlay2/04ea1faa8074e5862f40eecdba968bd9b7f222cb30e5bf6a0b9a9c48be0940f2/work)
docker 将镜像的文件挂载为只读, 将容器层挂载为可读可写。 文件系统可以分为2部分
upper(容器层) + lower (镜像层)
在修改容器后, 容器系统会多一层, 里面包含了修改的文件,以及删除后生成的without文件, 然后生成镜像
但对于以下特殊目录文件不会提交, 因为这些文件是运行时docker 要根据用户配置进行修改的。
例如docker 的link选项,会在容器的hosts 文件里定义对应的容器名->容器ip
标签:需要 执行 err 包含 gre 运行 res 运行时 tps
原文地址:https://www.cnblogs.com/hustcpp/p/13232197.html