是否可以从包含OS的.img文件创建docker镜像

时间:2016-04-12 12:03:10

标签: docker docker-image

是否可以将包含操作系统(Arch Linux)的.img文件转换为Docker镜像?更确切地说,我想 dockerize 一个RuneAudio Raspberry Pi图像。

1 个答案:

答案 0 :(得分:4)

从完整的操作系统映像生成Docker镜像通常是次优的过程。操作系统映像将包含Docker环境中根本不需要的各种内容,这意味着生成的映像将不必要地大。

也就是说,如果你想尝试这个,libguestfs包中的guestfish命令会让这很简单:

guestfish --ro -a RuneAudio_rpi_0.3-beta_20141029_2GB.img -m /dev/sda5:/ tar-out / - |
docker import - runeaudio 

这将创建一个runeaudio泊坞窗图像,其中包含RuneAudio_rpi_0.3-beta_20141029_2GB.img磁盘映像的内容。请注意,这当然只能在Raspberry Pi上运行的Docker下运行,如果没有进一步修改,生成的图像不一定能够正常工作。

您也可以通过在本地挂载磁盘映像来完成同样的事情:

losetup -P /dev/loop0 RuneAudio_rpi_0.3-beta_20141029_2GB.img
mount /dev/loop0p5 /mnt
tar -C /mnt -cf - | docker import - runeaudio
umount /mnt
losetup -d /dev/loop0

我喜欢guestfish因为它不需要root访问权限,并且不需要使用循环设备和挂载点,因此设置和清理次数较少。