本文共 1626 字,大约阅读时间需要 5 分钟。
Docker是个好东西毋庸置疑,甚至可以称其为万金油,什么场合都看到他的身影。自14年底开始,小到防污染的DNS、CoreOS的socks5代理,大点到开发团队的CI系统,一些Web项目等等,都有在用,并且稳定性非常好,使用起来也方便,但是最近经常发现各大论坛、网站、文档在使用Docker镜像的时候常常发现的一个误区,谨以此文抛砖引玉。
让我们从一个dockerfile说起,缘起我5月写的一个2048的Docker镜像,当时是在csphere的群里,以游戏的形式,教人快速的集成Web服务,提供服务。我们首先来看一个传统的镜像写法:
FROM ubuntu:12.04RUN apt-get updateRUN apt-get install -y nginx zip curlRUN echo "daemon off;" >> /etc/nginx/nginx.confRUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/masterRUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zipEXPOSE 80CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
解读一下:
基于ubuntu12.04,先来一个更新,然后安装nginx、zip、curl,配置nginx,下载2048代码,解压再放到指定位置,删除原始文件,抛出80端口,最后是执行命令。
这样的dockerfile再熟悉不过了吧,随便docker hub或者其他教学文档都是这样,接下来,我们来谈谈中间的毛病。
光提问题,不给解决方案就是耍流氓,还是看dockerfile:
FROM alpine:latestMAINTAINER alex alexwhen@gmail.comRUN apk --update add nginxCOPY . /usr/share/nginx/htmlEXPOSE 80CMD [“nginx”, “-g”, “daemon off;”]
极简化的利用dockerfile和base镜像和github的特性,能少一句就少一句,动动手试一下,这样build出来,整个镜像不超过10M,回过头来看看前面的镜像,光一个ubuntu得多大啊,实在是居家必备。
屏幕快照_2015-07-15_上午10.14_.23_.png
Docker是个好东西,应用的时候充分考虑自己的使用环境,不要动不动就FROM ubuntu、debian、centos。alpine是一个非常好的base,包管理系统比较完善,神器啊。
本人的docker-2048,可以从以下方式获得:
写在最后,写这个本来是教一个新人学写Dockerfile和快速的利用Docker云服务快速的构建出自己的应用。
原文发布时间为:2015-07-20
本文来自云栖社区合作伙伴“Linux中国
转载地址:http://oruhl.baihongyu.com/