为什么Docker的overlay2存储会显示为独立的挂载点?
问题答复
1. 该现象属于正常情况
你看到的overlay挂载点完全是Docker overlay2存储驱动的正常工作表现,不存在配置错误或后改分区的副作用:
- Docker使用overlay2作为存储驱动时,每个运行中的容器都会创建一个独立的overlay联合挂载,将镜像只读层、容器可写层合并映射到
/var/lib/docker/overlay2/<容器ID>/merged目录,供容器内部使用 - 从你提供的
docker info输出可以看到当前有22个正在运行的容器,和df输出里的22条overlay挂载记录完全对应 - 因为/var/lib/docker本身是独立XFS分区,所以所有overlay挂载的容量统计和该分区一致,属于正常现象,完全不影响Docker和容器的正常运行。
2. 隐藏overlay挂载点的配置方法
不建议彻底从系统挂载表中移除这些记录(会影响容器运行和问题排查),通常有两种常用的隐藏方案:
方案1:仅在执行df查询时过滤(最推荐)
直接给df命令添加排除overlay类型的参数即可,临时使用执行:
df -x overlay
如果需要默认生效,可以给当前用户添加命令别名,编辑~/.bashrc文件,添加如下内容:
alias df='df -x overlay -x tmpfs'
保存后执行source ~/.bashrc即可立即生效,后续执行df默认不会显示overlay和tmpfs类型的挂载点,排查问题时直接执行/usr/bin/df就可以看到全量挂载记录。
方案2:全局隐藏overlay挂载(不推荐)
如果需要所有系统工具(mount、df、fdisk等)默认不显示overlay挂载,可以修改/etc/fstab中/var/lib/docker分区的挂载选项,添加x-systemd.hide-mountpoint=yes参数,修改后示例如下:
/dev/mapper/afsys-var_lib_docker /var/lib/docker xfs rw,seclabel,relatime,attr2,inode64,sunit=512,swidth=512,noquota,x-systemd.hide-mountpoint=yes 0 0
修改后执行mount -o remount /var/lib/docker即可生效,注意该配置会隐藏该分区下所有子挂载点,排查Docker相关问题时需要先临时移除该参数。
注意:绝对不要手动执行umount卸载这些overlay挂载点,会直接导致正在运行的容器文件系统异常、数据丢失。
内容的提问来源于stack exchange,提问作者JLuxton
相关产品推荐
相关产品推荐

