上一篇 下一篇 分享链接 返回 返回顶部

如何将ISO转换为Docker镜像

发布人:Minchunlin 发布时间:2020-12-25 15:16 阅读量:2258

在寻求构建完美的云容器应用程序的过程中,您可能会发现可用镜像要么不包含所需的所有工具,要么包含过多的工具,要么根本无法信任。为此,您可以选择从下载或创建的任何给定ISO创建自己的镜像。

1、你需要什么

我将在Ubuntu Unity上进行演示,但是这个过程几乎可以在任何Linux发行版上完成。您需要安装并运行桌面Linux,具有sudo特权的用户,以及要转换的ISO。

2、如何安装必要的工具

首先,您需要安装squash-fs。为此,请打开一个终端窗口并发出命令:

sudo apt-get install squashfs-tools -y

您可能会发现已经安装了squashfs-tools。如果是这样,请继续进行下一个安装-Docker。

要在您的机器上安装Docker,请返回到终端并发出以下命令:

sudo apt-get install docker.io -y

安装Docker后,请使用以下命令启动并启用该服务:

sudo systemctl start docker

sudo systemctl enable docker

使用以下命令将用户添加到Docker组:

sudo usermod -aG docker $USER

使用以下命令使系统知道新添加的组:

newgrp docker

3、如何挂载ISO

现在,我们需要挂载您下载(或自己创建)的ISO。我将用Ubuntu Server 20.04 ISO进行演示。挂载ISO之前,请使用以下命令创建两个新文件夹:

mkdir rootfs unsquashfs

要将ISO镜像安装到rootfs文件夹,请发出以下命令:

sudo mount -o loop ~/Downloads/ubuntu-20.04-live-server-amd64.iso ~/rootfs

上面的命令会将镜像安装为只读,因此您可以忽略警告。

我们需要找到包含filesystem.squashfs文件的目录。为此,使用以下命令进入rootfs目录:

cd ~/rootfs

使用以下命令找到文件:

find . -type f | grep filesystem.squashfs

在Ubuntu服务器ISO上,该文件应位于casper目录中。

现在我们知道filesystem.squashfs文件在哪里,我们可以使用以下命令将必要的文件系统文件从rootfs目录提取到unsquashfs目录中:

cd ~/

sudo unsquashfs -f -d unsquashfs/ rootfs/casper/filesystem.squashfs

切记将casper替换为包含ISO filesystem.squashfs文件的目录。

根据您计算机的速度,以上命令应该很快运行,并以一个关于创建了多少文件,目录,符号链接,设备和fifos的报告结尾(图A)。

我们已经成功提取了必要的文件。

4、如何压缩和导入镜像

最后,我们可以使用Docker压缩和导入镜像。为此,发出命令:

sudo tar -C unsquashfs -c . | docker import - IMAGENAME/TAG

其中IMAGENAME是您要赋予镜像的名称,而TAG是镜像的标签。该过程完成后,您将看到打印出的镜像的sha256哈希(图B)。

我们的镜像sha256哈希表示导入成功。

要查看列出的Docker镜像,请发出以下命令:

docker images

您的新制作的镜像应该会出现(图C)。

我们新的Docker镜像已准备就绪,可用于部署容器。

这就是根据下载的ISO创建自己的Docker镜像的全部内容。您可以进一步确保您的容器是根据您自己创建或经过审核和信任的ISO构建的。

目录结构
全文