温馨提示×

Ubuntu Overlay如何添加新镜像

小樊
34
2025-11-08 12:41:19
栏目: 智能运维

Ubuntu Overlay添加新镜像的步骤(以Docker为例)

在Ubuntu环境中,OverlayFS是Docker默认的存储驱动之一,用于构建分层镜像。以下是通过OverlayFS添加新镜像(或新层)的具体流程:

1. 准备基础镜像

首先需要一个基础镜像(如Ubuntu官方镜像),作为OverlayFS的底层(lowerdir)。若未安装Docker,可通过以下命令安装:

sudo apt update
sudo apt install docker.io -y

拉取Ubuntu基础镜像:

docker pull ubuntu:22.04

2. 创建OverlayFS目录结构

OverlayFS需要四个核心目录:

  • lowerdir:基础镜像的只读层(可多个,用冒号分隔);
  • upperdir:可写层(存储对新镜像的修改);
  • workdir:OverlayFS内部使用的临时目录;
  • merged:最终合并后的视图(用户可见的文件系统)。

示例命令:

mkdir -p /mnt/overlay/{upper,work,lower,merged}

3. 挂载OverlayFS文件系统

使用mount命令将OverlayFS挂载到merged目录,指定lowerdir(基础镜像)、upperdir(可写层)和workdir:

sudo mount -t overlay overlay -o lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work /mnt/overlay/merged

注:若基础镜像是Docker镜像,需先将其导出为目录(如docker save ubuntu:22.04 | tar -C /mnt/overlay/lower -xvf -),或直接使用Docker的镜像层路径(如/var/lib/docker/overlay2/<镜像ID>/diff)。

4. 在Overlay层中添加新内容

进入merged目录(用户可见的文件系统),进行修改(如安装软件、复制文件):

sudo chroot /mnt/overlay/merged  # 可选:进入chroot环境
apt update && apt install -y curl  # 示例:安装curl
echo "Hello from Overlay!" > /tmp/new_file.txt  # 示例:创建新文件
exit  # 退出chroot

此时,所有修改都会保存在upperdir中(如/mnt/overlay/upper),而lowerdir中的基础镜像保持不变。

5. 提交新镜像

将修改后的Overlay层提交为新的Docker镜像:

docker commit /mnt/overlay/merged new-ubuntu-image

提交后,可通过docker images查看新镜像:

docker images
# 输出示例:
# REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
# new-ubuntu-image    latest    abc123def456   5 seconds ago   120MB

6. 清理工作目录

完成操作后,卸载OverlayFS并清理临时目录:

sudo umount /mnt/overlay/merged
rm -rf /mnt/overlay/{upper,work,merged}

关键说明

  • OverlayFS分层机制:每个修改(如安装软件、复制文件)都会生成新的upperdir层,基础镜像(lowerdir)保持不变,实现镜像的高效复用。
  • Docker集成:上述步骤是手动模拟Docker的Overlay2驱动流程。实际使用中,Docker会自动管理这些目录(如/var/lib/docker/overlay2)。
  • 持久化存储:若需长期保存修改,可将upperdirworkdir挂载到宿主机的持久化目录(如/data/overlay)。

通过以上步骤,即可在Ubuntu环境中通过OverlayFS添加新镜像(或新层),适用于容器化场景的镜像定制与管理。

0