构建基础镜像

我将应用打包到镜像中形成我们所需的镜像,往往需要一个基础的镜像作为我们应用服务的外部环境,那么问题来了,基础镜像从何而来?官方推荐的是直接从官网仓库pull一个,但由于官网被墙的比较厉害,所以这里介绍一些官方提供以及个人方法。

1.使用Debootstrap来创建Ubuntu的base image

  1. $ sudo debootstrap raring raring > /dev/null
  2. $ sudo tar -C raring -c . | docker import - raring
  3. a29c15f1bf7a
  4. $ docker run raring cat /etc/lsb-release
  5. DISTRIB_ID=Ubuntu
  6. DISTRIB_RELEASE=13.04
  7. DISTRIB_CODENAME=raring
  8. DISTRIB_DESCRIPTION="Ubuntu 13.04"

在docker github上有更多有关基础镜像的介绍

  • BusyBox
  • CentOS / Scientific Linux CERN (SLC) on Debian/Ubuntu or on CentOS/RHEL/SLC/etc.
  • Debian / Ubuntu

2.使用scratch创建base image
在Docker registry中有一个scratch,你可以pull拉取下来,

  1. $ sudo docker pull scratch

甚至可以自己制作

  1. $ tar cv --files-from /dev/null | docker import - scratch

Scratch镜像很赞,它简洁、小巧而且快速, 它没有bug、安全漏洞、延缓的代码或技术债务。这是因为它基本上是空的。除了Docker添加了点的metadata (译注:元数据为描述数据的数据)。总之它是非常小的一个Docker镜像。
为Scratch镜像创建内容,具体Dockerfile命令如下:

  1. FROM scratch
  2. ADD hello /
  3. CMD ["/hello"]

3.下载官方提提供的OS的tar文件
OPENVZ上下载基础包然后使用docker limport 加载到本地镜像,这里以ubuntu14.04 为例,从openvz下载一个ubuntu14.04的模板:

  1. wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64.tar.gz
  2. cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:base