阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何让你的 Docker 镜像更小

130次阅读
没有评论

共计 2199 个字符,预计需要花费 6 分钟才能阅读完成。

Docker 是个好东西毋庸置疑,甚至可以称其为万金油,什么场合都看到他的身影。自 14 年底开始,小到防污染的 DNS、CoreOS 的 socks5 代理,大点到开发团队的 CI 系统,一些 Web 项目等等,都有在用,并且稳定性非常好,使用起来也方便,但是最近经常发现各大论坛、网站、文档在使用 Docker 镜像的时候常常发现的一个误区,谨以此文抛砖引玉。

如何让你的 Docker 镜像更小

让我们从一个 dockerfile 说起,缘起我 5 月写的一个 2048 的 Docker 镜像,当时是在 csphere 的群里,以游戏的形式,教人快速的集成 Web 服务,提供服务。我们首先来看一个传统的镜像写法:

FROM Ubuntu:12.04
RUN apt-get update
RUN apt-get install -y nginx zip curl
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN curl -/usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip
EXPOSE 80
CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]

解读一下:

基于 ubuntu12.04,先来一个更新,然后安装 nginx、zip、curl,配置 nginx,下载 2048 代码,解压再放到指定位置,删除原始文件,抛出 80 端口,最后是执行命令。

这样的 dockerfile 再熟悉不过了吧,随便 docker hub 或者其他教学文档都是这样,接下来,我们来谈谈中间的毛病。

  1. pull 一个 ubuntu 需要多少时间,占多大的空间?(初学者好多在这一步就头痛)
  2. ubuntu 在没有添加中国镜像源的情况,更新是个多么痛苦的事?(灯,等等等等)
  3. 配置啰嗦(麻烦,麻烦)
  4. 整个生成的镜像硕大无比,玩个 2048 不需要这么复杂。

光提问题,不给解决方案就是耍流氓,还是看 dockerfile:

FROM alpine:latest
MAINTAINER alex alexwhen@gmail.com
RUN apk --update add nginx
COPY . /usr/share/nginx/html
EXPOSE 80
CMD [“nginx”, “-g”, daemon off;”]

极简化的利用 dockerfile 和 base 镜像和 github 的特性,能少一句就少一句,动动手试一下,这样 build 出来,整个镜像不超过 10M,回过头来看看前面的镜像,光一个 ubuntu 得多大啊,实在是居家必备。

 

如何让你的 Docker 镜像更小

屏幕快照_2015-07-15_上午 10.14_.23_.png

Docker 是个好东西,应用的时候充分考虑自己的使用环境,不要动不动就 FROM ubuntu、debian、CentOS。alpine 是一个非常好的 base,包管理系统比较完善,神器啊。

本人的 docker-2048,可以从以下方式获得:

  1. github:https://github.com/alexwhen/docker-2048
    注:你可以在此基础上玩出更多你想要的东西
  2. 直接运行:docker run -d -p 80:80 alexwhen/docker-2048 (本机 80 端口有占用的请换端口),然后打开浏览器输入 127.0.0.1,你就可以愉快的玩了。
  3. 本镜像同样存在于 alauda 和 daocloud。

写在最后,写这个本来是教一个新人学写 Dockerfile 和快速的利用 Docker 云服务快速的构建出自己的应用。

配置 Docker 镜像下载的本地 mirror 服务  http://www.linuxidc.com/Linux/2015-07/120061.htm

Docker 安装应用 (CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htm

在 Ubuntu Trusty 14.04 (LTS) (64-bit) 安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm 

Docker 安装应用 (CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

Ubuntu 14.04 安装 Docker  http://www.linuxidc.com/linux/2014-08/105656.htm 

阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm 

Docker 的详细介绍 :请点这里
Docker 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-07/120196.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计2199字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中