用Docker云服務(wù)快速構(gòu)建應(yīng)用時(shí)發(fā)現(xiàn)的怪象
docker是個(gè)好東西毋庸置疑,甚至可以稱其為萬金油,什么場(chǎng)合都看到他的身影,自14年底開始,個(gè)人也是小到防污染的DNS,coreos的 socks5代理,大點(diǎn)到開發(fā)團(tuán)隊(duì)的CI系統(tǒng),一些web項(xiàng)目等等,都有在用,并且穩(wěn)定性非常好,使用起來也方便,但是最近經(jīng)常發(fā)現(xiàn)各大論壇,網(wǎng)站,文檔在使用docker鏡像的時(shí)候常常發(fā)現(xiàn)的一個(gè)誤區(qū),謹(jǐn)以此文拋磚引玉。
讓我們從一個(gè)dockerfile說起,緣起我5月寫的一個(gè)2048的docker鏡像,當(dāng)時(shí)是在csphere的群里,以游戲的形式,教人快速的集成web服務(wù),提供服務(wù)(順帶給利俊的csphere廣告一下,www.csphere.cn,還定期提供免費(fèi)虛機(jī)免費(fèi)視頻培訓(xùn),業(yè)界良心)。我們首先來看一個(gè)傳統(tǒng)的鏡像寫法:
- 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 -o /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,先來一個(gè)更新,然后安裝nginx,zip,curl,配置nginx,下載2048代碼,解壓再放到指定位置,刪除原始文件,拋出80端口,***是執(zhí)行命令。
這樣的dockerfile再熟悉不過了吧,隨便docker hub或者其他教學(xué)文檔都是這樣,接下來,我們來談?wù)勚虚g的毛病。
1、pull一個(gè)ubuntu需要多少時(shí)間,占多大的空間?(初學(xué)者好多在這一步就頭痛)2、ubuntu在沒有添加中國鏡像源的情況,更新是個(gè)多么痛苦的事?(燈,等等等等)3、配置啰嗦(麻煩,麻煩) 4、整個(gè)生成的鏡像碩大無比,玩?zhèn)€2048不需要這么復(fù)雜。
光提問題,不給解決方案就是耍流氓,還是看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的特性,能少一句就少一句,動(dòng)動(dòng)手試一下,這樣build出來,整個(gè)鏡像不超過10M,回過頭來看看前面的鏡像,光一個(gè)ubuntu得多大啊,實(shí)在是居家必備。
docker是個(gè)好東西,應(yīng)用的時(shí)候充分考慮自己的使用環(huán)境,不要?jiǎng)硬粍?dòng)就FROM ubuntu,debian,centos。alpine是一個(gè)非常好的base,包管理系統(tǒng)比較完善,神器啊。
本人的docker-2048,可以從以下方式獲得:
1、github:https://github.com/alexwhen/docker-2048
注:你可以在此基礎(chǔ)上玩出更多你想要的東西
2、直接運(yùn)行: docker run -d -p 80:80 alexwhen/docker-2048 (本機(jī)80端口有占用的請(qǐng)換端口),然后打開瀏覽器輸入127.0.0.1,你就可以愉快的玩了。
3、本鏡像同樣存在于alauda和daocloud
寫在***,寫這個(gè)本來是教一新人學(xué)寫dockerfile和快速的利用docker云服務(wù)快速的構(gòu)建出自己的應(yīng)用。