Docker 和 Overlay2
使用 alpine 镜像创建一个容器 conoverlay 来看看其具体的存储使用情况:
root@docker-host:~# docker run –name conoverlay –rm -id alpine ash
e3ae88ad1b885154220ce00c881f02df696f4846e2ac6e0d78949a72d3eb9307
root@docker-host:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3ae88ad1b88 alpine "ash" 5 seconds ago Up 4 seconds conoverlay
root@docker-host:~#
通过 docker inspect 命令查找 conoverlay 容器根目录:
root@docker-host:~# docker inspect conoverlay | grep UpperDir
"UpperDir": "/var/lib/docker/overlay2/c708a7b258e7c0a0d246bef7f14de3675c2f65eedefdc7807104159af1308ced/diff",
root@docker-host:~#
然后在 mount 输出中查找包含这个路径的 overlay 挂载:
root@docker-host:~# mount | grep "/var/lib/docker/overlay2/c708a7b258e7c0a0d246bef7f14de3675c2f65eedefdc7807104159af1308ced/diff"
overlay on /var/lib/docker/overlay2/c708a7b258e7c0a0d246bef7f14de3675c2f65eedefdc7807104159af1308ced/merged type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/VMPJWGALI3EQTCCN3RM5TXM3LF:/var/lib/docker/overlay2/l/5XSW6AUA5UT7QGGYBEYB74U0NY,upperdir=/var/lib/docker/overlay2/c708a7b258e7c0a0d246bef7f14de3675c2f65eedefdc7807104159af1308ced/diff,workdir=/var/lib/docker/overlay2/c708a7b258e7c0a0d246bef7f14de3675c2f65eedefdc7807104159af1308ced/work,xino=off)
root@docker-host:~#
这个反白显示中的 merged 目录就是该容器的根文件系统挂载点。
root@docker-host:~# cd /var/lib/docker/overlay2/c708a7b258e7c0a0d246bef7f14de3675c2f65eedefdc7807104159af1308ced/merged
root@docker-host:/var/lib/docker/overlay2/c708a7b258e7c0a0d246bef7f14de3675c2f65eedefdc7807104159af1308ced/merged# ls -a
. bin .dockerenv home media opt root sbin sys usr
.. dev etc lib mnt proc run srv tmp var
root@docker-host:/var/lib/docker/overlay2/c708a7b258e7c0a0d246bef7f14de3675c2f65eedefdc7807104159af1308ced/merged#
直接进入 conoverlay 容器,查看容器内的文件系统:
对比后知道,conoverlay 容器的根文件系统,和 Linux 文件系统的 merged 挂载点是一致的。
在容器中创建一个测试文件:
bash
/ # touch /tmp/tempfile
/ # ls -l /tmp/tempfile
-rw-r–r– 1 root root 0 Jul 6 02:50 /tmp/tempfile
/ #
在容器挂载点 merged 目录验证:
root@docker-host:/var/lib/docker/overlay2/c708a7b258e7c0a0d246bef7f14de3675c2f65eedefdc7807104159af1308ced/merged# ls -l tmp/tempfile
-rw-r–r– 1 root root 0 Jul 6 02:50 tmp/tempfile
root@docker-host:/var/lib/docker/overlay2/c708a7b258e7c0a0d246bef7f14de3675c2f65eedefdc7807104159af1308ced/merged#




