Skip to content

制作docker镜像

从ISO制作docker镜像

我们都知道,从hub.docker.com可以拉取到docker镜像,那么这些基础镜像是怎么来的呢?换个说法,ubuntu 16.04是怎么制作成docker镜像的呢?

  • 准备条件

这次准备把 ubuntu-16.04.6-server-i386.iso 制作成docker镜像

  1. ubuntu-16.04.6-server-i386.iso下载地址 https://releases.ubuntu.com/16.04/
  2. 一台安装了docker的ubuntu机器
  3. 一台Mac(或者别的系统可以安装qemu)
  • 制作qcow2镜像

首先在mac下执行安装qemu

bash
brew install qemu

创建10G的空间, 使用qcow2格式

bash
qemu-img create -f qcow2 ubuntu-16.04.qcow2 10G

启动虚拟机并挂载iso镜像,安装镜像

bash
qemu-system-i386 -cdrom ~/Downloads/ubuntu-16.04.6-server-i386.iso -boot d -m 1024 -hda ubuntu-16.04.qcow2

安装完成后关闭虚拟机,这样我们就得到了一个安装好的ubuntu.qcow2的镜像文件

  • 从qcow2到docker image

接下来是在Ubuntu下操作命令, 使用root用户

安装 guestmount

bash
apt-get install libguestfs-tools

挂载 ubuntu-16.04.qcow2 到文件, 可以把文件从Mac下复制到ubuntu

bash
mkdir /mnt/ubuntu
guestmount -a ubuntu-16.04.qcow2 -i --rw /mnt/ubuntu
cd /mnt
tar -C ubuntu -c . | docker import - ubuntu-16.04

这样我们就得到了ubuntu-16.04:latest的镜像文件, 使用下面命令验证

bash
docker images

用vmware制作镜像

在上一步中我们已经安装了qemu, 这里直接使用qemu-img命令对vmdk文件进行处理, vmdk是vmware的镜像主文件

qemu-img convert -O qcow2 centos4.8.vmdk centos4.8.qcow2

这样就得到了centos4.8.qcow2文件,接下来就是挂载和转换操作和上面步骤一致

reference