如何做出好的 Docker Image

Docker 愈來愈紅,而 image 也愈來愈多,於是就有人討論要如何做出好的 Docker image。

在「Building good docker images」這篇文章裡提到了不少現象以及改善的技巧。

首先是 base image 的選用。除非有特別的理由,不然作者建議是基於 debian:wheezy (85MB) 而非 ubuntu:14.04 (195MB)。甚至在某些極端的情況下,你可以選擇 busybox (2MB)。

再來是沒事不要塞 build tools 進去,除非那是之後執行必要的東西。

然後是避免暫存檔的產生,作者舉的例子還蠻容易懂的。這樣是 109MB:

FROM debian:wheezy
RUN apt-get update && apt-get install -y wget
RUN wget http://cachefly.cachefly.net/10mb.test
RUN rm 10mb.test

而這樣只有 99MB,原因是每一個 RUN 都會疊一層上去:

FROM debian:wheezy
RUN apt-get update && apt-get install -y wget
RUN wget http://cachefly.cachefly.net/10mb.test && rm 10mb.test

所以,同樣的道理,要避免暫存檔時,可以考慮這種寫法:

wget -O - http://nodejs.org/dist/v0.10.32/node-v0.10.32-linux-x64.tar.gz | tar zxf -

以及裝完後馬上 clean:

FROM debian:wheezy
RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/*

後面還有一些技巧,不過前面講的空間問題比較重要。

Leave a Reply

Your email address will not be published. Required fields are marked *