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的源,最後找到了一篇文章(參考
附上找了好久找到的更新源
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
可以將映象匯入。