Docker Base Image制作

背景

docker容器的创建依赖于镜像,镜像的创建依赖于目录树,不同的linux发行版,有自己的目录树。本文主要介绍debian族发行版与fedora族发行版base image的创建。如果您想从零创建一个linux发行版base image,请参考LFS(linux from scratch)。

测试环境

  • OS Version, RHEL7.2
  • docker Version, 1.12.5

debian

debian类的操作系统包括debian、ubuntu,这一类操作系统的目录树都是用debootstrap来生成的。其中de取debian之意。

安装

可直接使用yum安装yum install debootstrap

使用

debian默认的mirror为https://deb.debian.org/debian/

debootstrap格式:
debootstrap [OPTION...] <版本> <目录树存放位置目录> [<镜像(mirror)位置>]

eg: sudo debootstrap jessie my_jessie

fedora

fedora类的操作系统包括fedora、RHEL、CentOS,这一类操作系统的目录树都是用febootstrap来生成的。其中fe取fedora之意。

安装

febootstrap并没有存在于RHEL7.2(或CentOS7.2)Repo中,目前可以直接安装6.8 repo中的febootstrap-3.21-4

febootstrap-3.21-4依赖包如下所示:

  • fakechroot-2.9-24.5.el6_1.1.x86_64
  • fakechroot-libs-2.9-24.5.el6_1.1.x86_64
  • fakeroot-1.12.2-22.2.el6.x86_64
  • fakeroot-libs-1.12.2-22.2.el6.x86_64
  • febootstrap-supermin-helper-3.21-4.el6.x86_64

使用

febootstrap格式:
febootstrap [OPTION...] <版本> <目录树存放位置目录> [镜像(mirror)位置]

eg: febootstrap -i bash 6.8 my_centos6.8 http://mirrors.163.com/centos/6.8/os/x86_64/

LFS

Todo…

镜像导入

Tar导入方式创建镜像

无论是debootstrap还是febootstrap生成的目录,其导入docker image的方法是一样的。

格式:
tar -C <目录树目录> -c . | docker import - <docker image 名称>

eg: tar -C ./my_jessie -c . | docker import - my_jessie_base

空镜像创建

格式:
tar cv --files-from /dev/null | docker import - <docker image 名称>

eg: tar cv --files-from /dev/null | docker import - empty_image

参考&鸣谢