在Ubuntu上使用Overlay实现文件共享,主要有以下两种场景及操作步骤:
安装必要工具
确保内核支持OverlayFS(Ubuntu默认支持),安装overlayroot:
sudo apt update && sudo apt install overlayroot
创建目录结构
建立lower(基础层)、upper(修改层)、work(工作层)和merged(挂载点)目录:
sudo mkdir -p /lower /upper /work /merged
挂载OverlayFS
使用mount命令合并目录:
sudo mount -t overlay overlay -o lowerdir=/lower,upperdir=/upper,workdir=/work /merged
lowerdir:基础文件层(可提前放入文件)。upperdir:存储修改的文件,所有写入操作仅影响此层。验证与使用
查看/merged目录,可看到lower和upper的合并内容,对/upper的修改会实时反映在/merged中:
ls -l /merged
持久化配置(可选)
编辑/etc/fstab,添加以下内容实现开机自动挂载:
overlay /merged overlay defaults,lowerdir=/lower,upperdir=/upper,workdir=/work 0 0
配置Docker存储驱动
编辑/etc/docker/daemon.json,设置storage-driver为overlay2:
{
"storage-driver": "overlay2"
}
重启Docker生效:
sudo systemctl restart docker
创建共享卷
在Docker中通过-v参数挂载upper目录到多个容器:
docker run -it --name container1 -v /path/to/shared-dir:/upper ubuntu
docker run -it --name container2 -v /path/to/shared-dir:/upper ubuntu
多个容器通过挂载同一upper目录实现文件共享。
lower、upper目录权限正确,避免访问冲突。upper目录需存储在持久化存储(如本地磁盘或网络存储),避免容器重启后数据丢失。