用Docker定制Ubuntu启动光盘镜像
用Docker定制Ubuntu启动光盘镜像 ubuntu 启动光盘镜像通常用于安装Ubuntu,但也可以用于其他一些情况,包括没有持久性的预配置桌面和用于安装的自定义iso。传统上,这些都是用chroots制作的。还有一些图形化工具也可以制作,比如Cubic,这使得这个过程更容易。 但是,这个过程没有任何内置的“检查点”,所以很难迭代。不过,Docker的镜像创建系统是其中一个做得很好的工具. 本文将介绍如何使用该系统创建ubuntu 启动光盘镜像。 构建环境 本工具需要一个支持squashfs-tools-ng工具的Linux发行版,用来解包和重打包ISO镜像。截止本文创作时,Ubuntu 20.04LTS时是最好的支持该工具的Ubuntu发行版。因此本工具采取了一个Ubuntu 20.04LTS的虚拟机作为构建环境。 Docker 当然是必不可少的. # 安装docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh ./get-docker.sh 用下面的命令安装其他的依赖包。 sudo apt-get install p7zip-full grub2-common mtools xorriso squashfs-tools-ng 最后,需要下载基础的Ubuntu启动光盘镜像。下载地址在https://ubuntu.com/download/desktop。 (此过程可能也适用于其他Ubuntu版本(例如服务器版本),但是通常有更好的方法来部署服务器。) 创建Docker基础映像 ISO通过引导Linux内核,挂载squashfs映像并从中启动Ubuntu来工作。 因此,我们需要从ISO中获取该squashfs映像并从中创建一个Docker基础映像。 运行以下命令以从ISO中提取squashfs映像: # UBUNTU_ISO_PATH=path to the Ubuntu live ISO downloaded earlier 7z e -o. "$UBUNTU_ISO_PATH" casper/filesystem.squashfs 然后将该squashfs映像导入Docker: sqfs2tar filesystem.squashfs | sudo docker import - "ubuntulive:base" 这将需要几分钟才能完成。 Customising using a Dockerfile 现在,squashfs映像可作为Docker中的映像使用,我们可以构建一个对其进行修改的Dockerfile。 # 在上一节中,我们将squashfs映像导入Docker中,镜像名为'ubuntulive:base'FROMubuntulive:base# 设置环境变量,以便apt非交互地安装软件包# 这些变量将仅在Docker中设置,而不在安装镜像中设置ENV DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical # 进行一些修改,例如 安装谷歌浏览器RUN wget -q -O - https://dl-ssl....