用Docker云服务快速构建应用时发现的怪象

云计算
写这个本来是教一新人学写dockerfile和快速的利用docker云服务快速的构建出自己的应用。最近经常发现各大论坛,网站,文档在使用docker镜像的时候常常发现的一个误区,谨以此文抛砖引玉。

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

让我们从一个dockerfile说起,缘起我5月写的一个2048的docker镜像,当时是在csphere的群里,以游戏的形式,教人快速的集成web服务,提供服务(顺带给利俊的csphere广告一下,www.csphere.cn,还定期提供免费虚机免费视频培训,业界良心)。我们首先来看一个传统的镜像写法:

 

  1. FROM ubuntu:12.04 
  2. RUN apt-get update 
  3. RUN apt-get install -y nginx zip curl 
  4. RUN echo "daemon off;" >> /etc/nginx/nginx.conf 
  5. RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master 
  6. RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip 
  7. EXPOSE 80 
  8. 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:

 

  1. FROM alpine:latest 
  2.  
  3. MAINTAINER alex alexwhen@gmail.com 
  4.  
  5. RUN apk --update add nginx 
  6.  
  7. COPY . /usr/share/nginx/html 
  8.  
  9. EXPOSE 80 
  10.  
  11. CMD [“nginx”, “-g”, “daemon off;”] 

 

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

 

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云服务快速的构建出自己的应用。

原文链接:http://www.dockone.io/article/504
 

责任编辑:Ophira 来源: dockerone
相关推荐

2016-07-01 14:43:32

DockerServerless

2012-01-11 13:40:35

移动应用云服务

2015-04-28 15:14:53

云平台发现服务ZooKeeper

2015-06-03 10:01:56

云平台发现服务ZooKeeper

2010-07-30 14:43:55

Flex应用

2014-11-18 10:37:15

dockerlinux技巧

2013-06-28 13:39:14

云计算

2020-12-31 05:57:36

DockerSpringBootMaven

2014-05-06 14:14:49

IBM云服务云市场

2024-09-29 16:36:16

2018-09-07 18:32:39

云优先云计算

2021-02-23 15:05:55

Docker镜像开发

2017-01-20 14:41:33

腾讯云

2020-12-10 08:00:00

开发.NET工具

2013-12-31 10:25:56

原子移动云BaaS

2017-06-25 13:33:25

Spring Clou微服务架构

2023-10-12 09:48:00

微服务工具

2011-03-21 14:41:04

LAMPapacheweb

2015-03-19 11:30:04

DockerDocker集群服务发现

2024-03-08 13:04:21

点赞
收藏

51CTO技术栈公众号