歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 如何讓你的Docker鏡像更小

如何讓你的Docker鏡像更小

日期:2017/2/27 15:47:26   编辑:Linux教程
Docker是個好東西,應用的時候充分考慮自己的使用環境、場景,不要動不動就FROM ubuntu、debian、centos,語句精簡,遞進邏輯結構,構建微服務,運維各方面你都會發現省成本,一個小小的2048游戲足以說明問題。

Docker是個好東西毋庸置疑,甚至可以稱其為萬金油,什麼場合都看到他的身影,自14年底開始,個人也是小到防污染的DNS、CoreOS的 socks5代理,大點到開發團隊的CI系統,一些Web項目等等,都有在用,並且穩定性非常好,使用起來也方便,但是最近經常發現各大論壇、網站、文檔 在使用Docker鏡像的時候常常發現的一個誤區,謹以此文拋磚引玉。

讓我們從一個dockerfile說起,緣起我5月寫的一個2048的Docker鏡像。我們首先來看一個傳統的鏡像寫法:
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,先來一個更新,然後安裝nginx、zip、curl,配置nginx,下載2048代碼,解壓再放到指定位置,刪除原始文件,拋出80端口,最後是執行命令。

這樣的dockerfile再熟悉不過了吧,隨便docker hub或者其他教學文檔都是這樣,接下來,我們來談談中間的毛病。

1、pull一個ubuntu需要多少時間,占多大的空間?(初學者好多在這一步就頭痛)2、ubuntu在沒有添加中國鏡像源的情況,更新是個多麼痛苦的事?(燈,等等等等)3、配置啰嗦(麻煩,麻煩) 4、整個生成的鏡像碩大無比,玩個2048不需要這麼復雜。

光提問題,不給解決方案就是耍流氓,還是看dockerfile:
FROM alpine:latest

MAINTAINER alex [email protected]

RUN apk --update add nginx

COPY . /usr/share/nginx/html

EXPOSE 80

CMD [“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,可以從以下方式獲得:
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://dockone.io/article/504
Copyright © Linux教程網 All Rights Reserved