Docker基础镜像的制作

目前大部分的文章讨论的都是怎么从docker hub或者openvz上下载基础镜像,然后添加自己的功能制作镜像,包括涵盖了大部分docker内容的。但是如果实在找不到想要的基础镜像,比如我想制作Fedora Core 2的基础镜像,可是找了好久都没有找到,就需要自己从头制作基础镜像。

制作需要在linux下,我的操作系统是centos6.5。

1.    安装febootstrap

Febootstrap在EPEL库里,所以首先要把EPEL库增加到yum源里。

在/etc/yum.repo.d/下新建epel.repo,内容如下

[epel]

name=fedora-epel

baseurl=http://mirrors.aliyun.com/epel/6/i/i386/

enabled=1

gpgcheck=0

然后#yum install febootstrap

2.    系统版本的选择

目前实际机器上用的系统是Fedora Core release3(Heidelberg)Kernel 2.6.9-34.EL on i586,编译用的机器系统是Red Hat AS4 U3, gcc版本gcc version 3.4.520051201 (Red Hat 3.4.5-2)

现在我从网上找到了fedora core 3,但是发现内核版本是kernel2.6.9-1.667 gcc 版本是gcc version3.4.2 20041017 (Red Hat 3.4.2-6.fc3),而Red Hat AS4 U3没有找到更新源。这就陷入了困境,如果采用fc3,与之前的编译环境不符,可是又找不到Red Hat AS4 U3的源,最后找到了一篇文章(参考https://wenku.baidu.com/view/a97f9bb2fd0a79563c1e72c0.html)知道了CentOS4.3等同于RedHat AS4 U3,既然这样就直接用centos4.3来制作编译环境吧。

附上找了好久找到的更新源

Centos4.3 http://vault.centos.org/4.3/os/i386/

Centos6.5 http://vault.centos.org/6.5/os/i386/

Fedora core3 http://archives.fedoraproject.org/pub/archive/fedora/linux/core/3/i386/os/

 

3.    制作镜像文件

利用febootstrap制作镜像文件,首先要找到更新源的地址。找了好久终于找到

制作命令

$febootstrap -i bash -i gcc-c++ -i openssh -i yum -i make centos4.3 centos4.3 http://vault.centos.org/4.3/os/i386/

其中-i后是要安装的程序,centos4.3是镜像标签,后一个centos4.3是生成的目录,后面是源地址。

执行完毕后会在当前目录下生成centos4.3目录

中间碰到错误UnicodeDecodeError: 'ascii' codeccan't decode byte 0xe8 in position

是yumrepo.py中报出的。

只要修改这个文件,在import后增加

Import sys

  reload(sys)
    sys.setdefaultencoding('utf-8')

生成完centos4.3目录后用

$cd centos4.3

$tar -czvf centos4.3.tar.gz *

(注意,一定要进入centos4.3目录后用这个命令,不要把centos目录也压进压缩包了。否则运行容器的时候会出现used "exec:\"bash\": executable file not found in $PATH": unknown.的错误。)

(由于我的操作系统是centos6.5,而docker是在window上安装的dockertoolbox17,后来导入文件的时候出现了错误,发现是tar版本的问题,于是在centos6.5上只用tar -cvf打包,然后在docker虚拟机上压缩。)

 生成镜像的压缩文件。

 

4.    在docker中导入

$docker imager import centos4.3.tar.gz centos:4.3

可以将镜像导入。

 

你可能感兴趣的:(Docker基础镜像的制作)