封尘网

让学习成为一种习惯!

centos65制作成一个10M以下的docker镜像

不断的超越自己,突破限制,只有打破常规的思想才能走得更远。互联网上有很多个开源的Linux分支或发行版本,都适合制作docker镜像,最小的才1M 左右,而在docker仓库上搜到的大部分Centos65的镜像都有几十M左右,就上次制作的都有60M。而这次制作的才不到10M的一个Centos65系统镜像。

有人说,你已经做到很好了,我说:如果再做一个更小的呢? 基本可以到达apline那种级别的;更好没有止境。 这怎么听起来像某某广告。。。

最后的效果:

[root@docker data]# tar -C ${centos_root} -c . | docker import - centos65:v4 
a37676995bbaf5a94b3d318022fb06a6f8714e10d70fcc8542c468da131e22ca 
[root@docker data]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE 
centos65            v4                  a37676995bba        3 seconds ago       9.149 MB

这个做为基础镜像包,目前只考虑到Java环境跑Tomcat所以对于PHP的没做更深的研究;

保留了这些命令,因为busybox虽然只有1M多的大小,但是很多命令无法使用,不方便做调试。

bash-4.1# ls bin/ 
basename  cat  cut   dd  echo   env    find  gunzip  ln  mkdir  ps   rm   sh     sort  touch  uname 
bash      cp   date  df  egrep  false  grep  gzip    ls  mv pwd  sed  sleep  sync  true

图就不截了,看看大致的目录结构吧!

[root@docker bin]# du -h --max-depth=1 /data/centos65 
2.0M    /data/centos65/usr 
4.0K    /data/centos65/tmp 
4.0K    /data/centos65/sys 
4.0K    /data/centos65/opt 
228K    /data/centos65/etc 
4.0K    /data/centos65/mnt 
4.0K    /data/centos65/sbin 
4.0K    /data/centos65/boot 
64K /data/centos65/lib 
4.0K    /data/centos65/srv 
12K /data/centos65/root 
4.0K    /data/centos65/media 
4.0K    /data/centos65/home 
4.0K    /data/centos65/proc 
60K /data/centos65/var 
4.0K    /data/centos65/dev 
4.0M    /data/centos65/lib64 
3.5M    /data/centos65/bin 
9.8M    /data/centos65

从上面看到主要占了这几M的空间就是lib64目录里的依赖库文件和bin目录的命令,其它的目录我已经尽量去掉了;比如时区,语言支持包,帮助说明文档等。

[root@docker bin]# ls /data/centos65/lib64/ 
ld-linux-x86-64.so.2  libcap.so.2  libm.so.6          libncursesw.so.5  libproc.so       libselinux.so.1 
libacl.so.1           libc.so.6    libncurses.so.5    libpcre.so.0      libpthread.so.0  libtinfo.so.5 
libattr.so.1          libdl.so.2   libncurses.so.5.7  libproc-3.2.8.so  librt.so.1

原来占空间最大的一个目录,最后也只剩下这么一点了;

[root@docker share]# pwd 
/data/centos65/usr/share 
[root@docker share]# ls 
i18n  locale  terminfo 
[root@docker share]# du -h --max-depth=1 . 
492K    ./terminfo 
48K ./i18n 
72K ./locale 
616K    .

还是那句话,最后还可以把一些命令再去掉,必须容器里不会用太多的命令,因为除了调试时会用到,一般都不会再使用了。所以最后可能剩下的空间可能是4M左右的,基本Centos6.5制作出来的镜像居然才有4M左右。

提醒:本文最后更新于 2288 天前,文中所描述的信息可能已发生改变,请谨慎使用。